Analyse XML Java utilisant DOM pour obtenir nodevalue
try {
String data = "<a><b c='d' e='f'>0.15</b></a>";
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(data));
Document document = documentBuilder.parse(is);
NodeList nl = document.getElementsByTagName("b");
Node n = (Node) nl.item(0);
System.out.println(n.getNodeValue());
} catch (Exception e) {
System.out.println("Exception " + e);
}
Je suis dans l'attente d'impression de 0,15, mais il affiche null. Des Idées?
Edit: Cela a fait le tour
if (n.hasChildNodes())
System.out.println(n.getFirstChild().getNodeValue());
else
System.out.println(n.getNodeValue());
source d'informationauteur kal
Vous devez vous connecter pour publier un commentaire.
C'est parce que un élément de fait n'a pas de
nodeValue
. Au lieu de cela il a un nœud de texte comme un enfant, qui a lenodeValue
vous le souhaitez.En bref, vous aurez envie de
getNodeValue()
le premier enfant de l'élément de nœud.Parfois l'élément contient plusieurs nœuds de texte, comme ils ont une taille maximale, dans ce cas, vous aurez besoin de quelque chose d'à la ce, à partir de la page liée antérieure:
Essayer de l'extraire de l'Élément plutôt que de partir du Nœud:
Si le nœud n'a pas encore imbriqués les descendants, que
n.getTextContent()
fonctionne très bien.Vous pouvez utiliser jOOX comme un wrapper pour les DOM standard, pour simplifier votre code.
Vous pourriez aussi avoir jOOX convertir cette valeur en double, par exemple: