我已经仔细阅读了先前的几个问题,这些问题涉及如何选择以下同级元素,但是当我尝试忽略名称空间以选择以下元素时,似乎无法做到这一点。
这是XML示例
<root xmlns:foo="http://www.foo.org/">
<foo:singers>
<foo:singer>Tom Waits</foo:singer>
<foo:value>4000</foo:value>
<foo:singer>B.B. King</foo:singer>
<foo:value>2000</foo:value>
</foo:singers>
</root>
我想根据节点的值(例如Tom Waits之后的4000)获取节点后的值。
到目前为止我有什么
//*[local-name()='singer' and text() = 'Tom Waits']/following-sibling::*//*[local-name() = 'value']
不幸的是,这不适用于我。
我可以做类似的事情
//*[local-name()='singer' and text() = 'Tom Waits']/following-sibling::foo:value/text()
可以,但是我更希望能够忽略命名空间'foo'。
答案 0 :(得分:1)
您与目前为止的状况很接近。
您所需要做的就是在*//*
*
替换following-sibling
//*[local-name()='singer' and text() = 'Tom Waits']/following-sibling::*[local-name() = 'value']/text()