2009-11-19 5 views
12

Prenant cet exemple simplifed de mon XML:SelectSingleNode renvoie toujours la valeur null?

<?xml version="1.0"?> 
<message xmlns="http://www.mydomain.com/MyDataFeed" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mydomain.com/MyDataFeed https://secure.mydomain/MyDataFeed/myDataFeed.xsd" requestId="13898" status="1"> 
<error>Invalid Login</error> 
</message> 

Je suis en train de sélectionner le nœud « d'erreur » en utilisant la méthode SelectSingleNode, mais en utilisant le code suivant retourne toujours NULL? De la recherche que j'ai faite ceci est lié aux namespaces mais je ne peux tout simplement pas obtenir n'importe quoi pour fonctionner. Aucun conseil?

Répondre

21

Il vous manque l'espace de noms XML défini par le noeud <message> dans votre appel SelectSingleNode. Si l'on suppose oss est une instance XmlDocument, vous devez faire ceci:

XmlNamespaceManager nsMgr = new XmlNamespaceManager(oss.NameTable); 
nsMgr.AddNamespace("ns", "http://www.mydomain.com/MyDataFeed"); 

XmlNode errorNode = oss.SelectSingleNode("/ns:message/ns:error", nsMgr); 

Marc

+0

Mais bien sûr! Les weenies XML ont beaucoup à répondre. –

Questions connexes