首页 >后端开发 >C++ >如何使用 C# 选择带有命名空间的 XML 节点?

如何使用 C# 选择带有命名空间的 XML 节点?

Linda Hamilton
Linda Hamilton原创
2025-01-07 20:27:41572浏览

How to Select XML Nodes with Namespaces Using C#?

在C#中选择具有命名空间的XML节点时遇到的问题

考虑一个包含命名空间的XML文档,其结构如下:

<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>

如果尝试使用SelectSingleNode方法检索Compile节点而没有指定命名空间,则会返回null:

<code class="language-csharp">XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(Xml);

XmlNode node = xmldoc.SelectSingleNode("//Compile"); // 返回null</code>

解决方案:使用XmlNamespaceManager

为了在根元素具有命名空间的情况下正确检索Compile节点,应使用XmlNamespaceManager

<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>

通过添加命名空间管理器并指定正确的命名空间前缀(在本例中为“msbld”),SelectSingleNode方法将成功定位并返回所需的节点。

以上是如何使用 C# 选择带有命名空间的 XML 节点?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn