XPath ne fonctionne pas comme souhaité en C #

Mon code ne renvoie pas le noeud

XmlDocument xml = new XmlDocument(); xml.InnerXml = text; XmlNode node_ = xml.SelectSingleNode(node); return node_.InnerText; // node_ = null ! 

Je suis presque sûr que mon XML et Xpath sont corrects.

Mon Xpath: /ItemLookupResponse/OperationRequest/RequestId

Mon XML:

    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx    

Le nœud que mon XPath renvoie est toujours nul pour une raison quelconque. Quelqu’un peut aider?

Votre XPath est presque correct – il ne tient simplement pas compte de l’espace de nom XML par défaut sur le nœud racine!

  *** you need to respect this namespace *** 

Vous devez en tenir compte et modifier votre code comme suit:

 XmlDocument xml = new XmlDocument(); xml.InnerXml = text; XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace("x", "http://webservices.amazon.com/AWSECommerceService/2005-10-05"); XmlNode node_ = xml.SelectSingleNode(node, nsmgr); 

Et alors votre XPath devrait être:

  /x:ItemLookupResponse/x:OperationRequest/x:RequestId 

Maintenant, votre node_.InnerText ne devrait définitivement plus être NULL!

Désolé pour la réponse tardive mais j’ai eu un problème similaire il y a un instant.

si vous voulez VRAIMENT ignorer cet espace de noms, supprimez-le simplement de la chaîne que vous utilisez pour initialiser le XmlDocument

 text=text.Replace( "", ""); XmlDocument xml = new XmlDocument(); xml.InnerXml = text; XmlNode node_ = xml.SelectSingleNode(node); return node_.InnerText;