web-dev-qa-db-fra.com

DOMDocument getNodeValue () renvoie la valeur null (contient une chaîne échappée en sortie)

Je traite un DomDocument qui est essentiellement le résultat XML d'un service Web SOAP. Pour vous donner une idée, voici à quoi ça ressemble

...<ParentNode><ChildNode>&lt;output&gt;&lt;escaped&lt;string</ChildNode></ParentNode>...

Oui, la valeur de ChildNode est une chaîne qui a été échappée en sortie et est un fichier XML contenu dans ce fichier XML. Je fais le traitement habituel de DomDocument tel que 

NodeList rows = dom.getElementsByTagName(ChildNode);
for(int i=0;i<rows.length;i++)
{
  System.out.println(rows[i].getParentNode()); // returns ParentNode
  System.out.println(rows[i].getNodeName()); // returns ChildNode
  System.out.println(rows[i].getNodeValue()); // returns null
}

Une fois que vous avez inspecté le code ci-dessus, vous vous êtes rendu compte que, même si le noeud renvoie des valeurs correctes pour ParentNode et le noeud NodeName, il renvoie une valeur null lors de l'accès à getNodeValue (). Il y a une chaîne ici, et je peux le voir dans la sortie de ma console. Mais je ne suis pas sûr de la ruse qui me manque ici, est-ce que la sortie qui s’échappe gâche le problème d’une manière particulière?

Merci, Parijat

20
user1020069

Vous voulez getTextContent() plutôt que getNodeValue() - ce dernier renvoie toujours null pour les nœuds d'élément.

47
Ian Roberts

Au lieu de

rows[i].getNodeValue()

utilisation

rows[i].getNodeValue().getChildNodes().item(0).getNodeValue()
0
Mike-Bell