在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中文网其他相关文章!