2010-05-25 13 views
0

J'ai un service Web ASP.NET qui renvoie un XMLDocument. Le service Web est appelé à partir d'une extension Firefox en utilisant XMLHttpRequest.Le service Web ASP.NET renvoie le résultat XML et nodevalue est toujours NULL

var serviceRequest = new XMLHttpRequest(); 
serviecRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 

Je consomme le résultat en utilisant responseXML. Jusqu'ici tout va bien. Mais lorsque je parcours le XML, je récupère nodeValue - nodeValue est toujours null. Lorsque je vérifie nodeType, nodeType est de type 1 (Node.ELEMENT_NODE == 1). Node.NodeValue indique que tous les nœuds de type Element renverront une valeur nulle.

Dans mon webservice j'ai créé une chaîne avec le XML à savoir xml="<Root><Book><Author>Hank</Author></Book></Root>"

Je crée ensuite la XmlDocument

XmlDocument doc = new XmlDocument(); 
doc.LoadXML(string); 

Je sais que je peux spécifier le nodetype à l'aide à l'aide CreateNode. Mais quand je construis juste le xml en ajoutant des valeurs de chaîne, il y a un moyen de changer le nodeType en Text donc Node.nodeValue sera "contenu du nœud de texte".

Répondre

1

J'ai juste dû m'arrêter pour passer en revue la documentation.

nodeValue est la propriété DOM standard et renvoie une valeur nodeValue. Les types de nœuds tels que les attributs ou le texte ont une valeur. Les éléments n'ont pas de valeur - ils ont seulement des nœuds enfants.

Donc plutôt que node.nodeValue, j'ai juste besoin d'appeler node.firstChild.nodeValue. En effet, un simple élément XML qui contient uniquement du texte semble avoir une valeur de son texte mais il s'agit en fait d'un élément qui a un seul nœud enfant. Le nœud enfant est un nœud de texte et c'est le nœud de texte qui a la valeur.