Maison >développement back-end >C++ >Comment puis-je utiliser XPath avec un espace de noms par défaut en C # pour sélectionner les nœuds?

Comment puis-je utiliser XPath avec un espace de noms par défaut en C # pour sélectionner les nœuds?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-29 08:05:10280parcourir

How Can I Use XPath with a Default Namespace in C# to Select Nodes?

Navigation XML avec des espaces de noms par défaut en C # en utilisant XPATH

Travailler avec des documents XML contenant des espaces de noms par défaut nécessite souvent une manipulation minutieuse des expressions XPath pour sélectionner correctement les nœuds. Une erreur courante consiste à omettre les préfixes de l'espace de noms, conduisant à des ensembles de résultats vides.

Ce problème est résolu en incorporant explicitement l'espace de noms dans votre requête XPath. Bien qu'un XPathNavigator ne soit pas strictement requis, les méthodes SelectNodes ou SelectSingleNode sont suffisantes.

L'étape cruciale consiste à créer un XmlNamespaceManager. L'exemple suivant le démontre:

<code class="language-csharp">XmlElement el = ...; //TODO:  Obtain your XmlElement
XmlNamespaceManager nsmgr = new XmlNamespaceManager(el.OwnerDocument.NameTable);
nsmgr.AddNamespace("x", el.OwnerDocument.DocumentElement.NamespaceURI);
var nodes = el.SelectNodes("/x:outerelement/x:innerelement", nsmgr);</code>

cet extrait de code initialise d'abord un XmlNamespaceManager en utilisant le NameTable de la racine du document XML. Il enregistre ensuite l'espace de noms par défaut de l'élément racine avec le préfixe "x". Enfin, SelectNodes est appelé avec l'expression xpath, y compris le préfixe "x", permettant la sélection des nœuds cibles. N'oubliez pas de remplacer le //TODO commentaire par le code pour obtenir votre XmlElement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn