2009-05-08 8 views
1

Le code suivant donne un NullReferenceException depuis XPathSelectElement ne peut naviguer dans l'expression XPath J'ai donné:Pourquoi XPathSelectElement donne-t-il une exception NullReferenceException?

String description = (String)node.XPathSelectElement("//car").Attribute("description"); 

J'ai débogués cela et vérifié que le noeud est en cours de lecture correctement, et que les éléments mes XPath sont capitalisés de la même manière qu'ils sont dans mon fichier XML. Je sais pertinemment qu'il existe un élément "voiture" avec un attribut appelé "description". Pourquoi ça ne marche pas? Cela a-t-il quelque chose à voir avec le besoin d'une version LocalName du XPath?

Répondre

1

Si votre document XML utilise des espaces de noms, cela peut être le problème. Si // voiture se trouve dans un autre espace de noms que celui par défaut, XPathSelectElement ne pourra pas trouver le nœud. (Vous devrez préfixer l'espace de nom correct)

0

Même après avoir résolu ce qui est probablement un problème d'espace de noms, vous devez tout de même vérifier que vous avez trouvé une voiture avant de rechercher des attributs.