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!