【问题标题】:Access Child nodes with namespace using xpath使用 xpath 访问具有命名空间的子节点
【发布时间】:2021-07-09 12:12:00
【问题描述】:

如何使用 Xpath 读取子笔记的内容?

我已经试过了:

var xml = new XmlDocument();
            
xml.Load("server-status.xml");
var ns = new XmlNamespaceManager(xml.NameTable);
ns.AddNamespace("ns", "namespace");
var node = xml.SelectSingleNode("descendant::ns:server[ns:ip-address]", ns)
Console.WriteLine(node.InnerXml)

但我只得到这样的字符串:

<ip-address>127.0.0.50</ip-address><name>Server 1</name><group>DATA</group>

如何单独获取值?

Xml 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<server-status xmlns="namespace">
    <server>
        <ip-address>127.0.0.50</ip-address>
        <name>Server 1</name>
        <group>DATA</group>
    </server>
</server-status>

【问题讨论】:

    标签: c# xml xpath


    【解决方案1】:

    您在 XPath 中正确使用了 XML 命名空间。

    但是,您原来的 XPath,

    descendant::ns:server[ns:ip-address]
    

    表示要选择所有带有ns:ip-address 子元素的ns:server 元素。

    如果您希望自己选择 ns:ip-address 孩子,请改为使用

    descendant::ns:server/ns:ip-address
    

    同样,您可以选择ns:namens:group 元素。

    【讨论】:

      猜你喜欢
      • 2019-01-29
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 2012-11-10
      相关资源
      最近更新 更多