Maison >développement back-end >C++ >Comment sélectionner des nœuds XML avec des espaces de noms en utilisant C# ?
Problèmes rencontrés lors de la sélection de nœuds XML avec des espaces de noms en C#
Considérons un document XML contenant des espaces de noms avec la structure suivante :
<code class="language-xml"><?xml version="1.0" encoding="utf-8"?><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><itemgroup><compile include="clsWorker.cs"></compile></itemgroup></project></code>
Si vous essayez de récupérer un nœud SelectSingleNode
en utilisant la méthode Compile
sans spécifier d'espace de noms, null sera renvoyé :
<code class="language-csharp">XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(Xml); XmlNode node = xmldoc.SelectSingleNode("//Compile"); // 返回null</code>
Solution : utilisez XmlNamespaceManager
Afin de récupérer correctement le nœud Compile
si l'élément racine a un espace de noms, XmlNamespaceManager
doit être utilisé :
<code class="language-csharp">XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable); ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003"); XmlNode node = xmldoc.SelectSingleNode("//msbld:Compile", ns);</code>
En ajoutant un gestionnaire d'espace de noms et en spécifiant le préfixe d'espace de noms correct (dans ce cas "msbld"), la méthode SelectSingleNode
localisera et renverra avec succès le nœud requis.
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!