J'ai un fichier XML lorsque certains sous-balises (éléments de noeud enfant) sont facultatifs. E.G.
if(fstelm_Note.getElementsByTagName("rest")!=null){ if(fstelm_Note.getElementsByTagName("rest")==null){ break; } NodeList restElmLst = fstelm_Note.getElementsByTagName("rest"); Element restElm = (Element)restElmLst.item(0); NodeList rest = restElm.getChildNodes(); String restVal = ((Node)rest.item(0)).getNodeValue().toString(); }else if(fstelm_Note.getElementsByTagName("note")!=null){ if(fstelm_Note.getElementsByTagName("note")==null){ break; } NodeList noteElmLst = fstelm_Note.getElementsByTagName("note"); Element noteElm = (Element)noteElmLst.item(0); NodeList note = noteElm.getChildNodes(); String noteVal = ((Node)note.item(0)).getNodeValue().toString(); }
5 Réponses :
C'est peut-être que vos NOPRISTES ne sont pas nuls, mais sont vides. Pouvez-vous essayer de changer votre code comme ceci et voyez ce qui se passe? etc. (Syntaxe DoubleCheck, etc., puisque je ne suis pas devant un compilateur.) P> p>
Vos exigences sont extrêmement pas clair em> mais j'utiliserais très probablement le Regardez: p>
Mais vous devriez essayer d'expliquer le problème général que vous essayez de résoudre plutôt que le problème spécifique que vous rencontrez. Mais ce faisant, 1. Vous obtiendrez probablement de meilleures réponses et 2. Le chemin choisi actuel pourrait ne pas être le meilleur. p> javax.xml.xpath code>
package pour analyser votre document XML avec le Langue de chemin XML (XPath) . p>
Bonjour Pasacal, merci pour vos suggestions. XPATH est-il un service Web (qui nécessite Internet pour le code)? Puis-je interroger le document XML en utilisant xpath? Est-ce similaire à XQuery? J'ai eu des problèmes avec la configuration de XQuery - alors ne pouviez pas le faire sortir. Pouvez-vous suggérer des didacticiels où je peux utiliser XPath ou XQuery? Merci pour votre temps.
J'ai eu ce même problème (en utilisant getelementsbytagname () pour obtenir des nœuds "facultatifs" dans un fichier XML) afin que je puisse dire par expérience comment le résoudre. Il s'avère que getelementsbytagname ne retourne pas NULL STROR> lorsque aucun nœud correspondant n'est trouvé; Au lieu de cela, il renvoie un objet nodéliste de la longueur zéro. Comme vous pouvez le deviner, la bonne façon de vérifier si un nœud existe dans un fichier XML avant d'essayer de récupérer son contenu serait similaire à: p> NodeList nl = element.getElementsByTagName("myTag");
if (nl.getLength() > 0) {
value = nl.item(0).getTextContent();
}
Essayez quelque chose comme ci-dessous
bool hasCity = OrderXml.Elements("City").Any();
Tout d'abord, vous devez créer le nodelist code>, puis vérifier la longueur de
NODELIST code> pour vérifier si l'élément actuel existe ou non dans la chaîne XML.
NodeList restElmLst = fstelm_Note.getElementsByTagName("rest");
if (restElmLst.getLength() > 0) {
String restVal = restElm.getElementsByTagName("rest").item(0).getTextContent();
}
Pas suffisamment d'informations. Affichez le code qui a le problème et indiquez où le NPE est lancé.