9

我有一个像

<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”这样的东西不起作用。

4

2 回答 2

21

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

//*[local-name()='child2']
于 2013-02-28T16:01:40.097 回答
1

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

于 2013-02-28T16:50:55.910 回答