当在不同级别定义多个名称空间时,如何从xpath中提取值?

时间:2013-08-11 02:45:50

标签: xml xpath namespaces

这是我从服务器获得的XML结果。

<ns1:tag1 xmlns:ns1="http://samples.org">
  <ns2:tag2 xmlns:ns2="http://samples.com">
    <ns3:tag3 xmlns:ns3="http://samples.edu">chanaka</ns3:tag3>
  </ns2:tag2>
</ns1:tag1>

这里我想从xpath表达式中获取值tag3。我尝试了以下xpath表达式,但它没有用。

//ns1:tag1/ns2:tag2/ns3:tag3

但是当我在根级别声明所有名称空间时,这个表达式给出了结果。

1 个答案:

答案 0 :(得分:0)

可能有一些更清洁的方法(我希望其他人知道)但是跟随也可以找到一份工作:

//ns1:tag1/node()[local-name() = 'tag2' and namespace-uri() = 'http://samples.com']/node()[local-name() = 'tag3' and namespace-uri() = 'http://samples.edu']