Lors de l'utilisation de XPath dans .NET (via un navigateur ou d'un SelectNodes/SelectSingleNode) sur XML avec des espaces de noms, vous devez:
fournir votre propre XmlNamespaceManager
et explicitement préfixe de tous les éléments d'une expression XPath, qui sont dans l'espace de noms.
Ce dernier est (reformulation de MME source lien ci-dessous): parce que XPath 1.0 ignore espace de noms par défaut (xmlns="some_namespace") spécifications. Ainsi, lorsque vous utilisez le nom de l'élément sans préfixe elle suppose null espace de noms.
C'est pourquoi .NET de la mise en œuvre de XPath ignore espace de noms avec le préfixe de la Chaîne.Vide dans XmlNamespaceManager et toujours utilise l'espace de noms null.
Voir XmlNamespaceManager et UndefinedXsltContext ne sais pas gérer l'espace de noms par défaut pour plus d'informations.
Je trouve cette "fonctionnalité" très gênant parce que vous ne pouvez pas faire de vieux XPath de l'espace de noms courant par le simple ajout d'espace de noms par défaut de déclaration, mais c'est la façon dont il fonctionne.