我有像
这样的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”这样的东西不起作用。
答案 0 :(得分:16)
使用local-name()
功能,如下所示:
//*[local-name()='child2']
答案 1 :(得分:0)
您可以将任何您喜欢的前缀(比如香蕉)绑定到命名空间"http://foo"
,而表达式/root/banana:child2
将找到child2元素,无论源文档中使用了什么名称空间前缀。只有名称空间URI必须匹配。