【问题标题】:Select node without namespace with XPath使用 XPath 选择没有命名空间的节点
【发布时间】:2013-02-28 15:58:25
【问题描述】:

我有一个类似的xml

<root xmlns:ns1="http://foo">
    <ns1:child1>Text</ns1:child1>
    <ns1:child2>Number</ns1:child2>
</root>

现在我从不同的人那里得到这个,例如,第 2 个人向我发送了另一条具有相同结构的消息,例如

<root xmlns:anotherNs="http://foo">
    <anotherNs:child1>Another Text</anotherNs:child1>
    <anotherNs:child2>Another Number</anotherNs:child2>
</root>

所以唯一的区别是命名空间的名称。如何使用一个 XPath 表达式为两个 xml 选择 child2 的内容?

“/root/child2”或“//child2”之类的东西不起作用。

【问题讨论】:

    标签: xpath xml-namespaces


    【解决方案1】:

    像这样使用local-name() 函数:

    //*[local-name()='child2']
    

    【讨论】:

      【解决方案2】:

      您可以将任何您喜欢的前缀(比如香蕉)绑定到命名空间"http://foo",表达式/root/banana:child2 将找到child2 元素,而不管源文档中使用了哪个命名空间前缀。只有命名空间 URI 必须匹配。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-06
        • 2012-11-10
        • 1970-01-01
        • 2013-11-29
        • 1970-01-01
        • 2011-05-23
        • 2018-05-30
        • 2021-07-09
        相关资源
        最近更新 更多