我如何使用xPath表达式获取key的值

时间:2013-03-15 21:44:22

标签: xml xpath

我需要编写一个XPath表达式来评估XML中的键'ErrorCode'= -3025的值是否为:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <esb:esb-header xmlns:esb="http://schemas.company.com/soa/esb">
    <esb:params>
      <esb:param>
        <esb:param-name>ErrorCode</esb:param-name>
        <esb:param-value>-3025</esb:param-value>
      </esb:param>
    </esb:params>
  </esb:esb-header>
</soapenv:Envelope>

请注意,元素有前缀。

1 个答案:

答案 0 :(得分:0)

XPath 2.0:

/*:Envelope/*:esb-header/*:params/*:param[*:param-name='ErrorCode' and *:param-value='-3025']

对于XPath 1.0,您可以使用local-name()代替(yuck):

/*[local-name()='Envelope']/*[local-name()='esb-header']/*[local-name()='params']/*[local-name()='param'][*[local-name()='param-name']='ErrorCode' and *[local-name()='param-value']='-3025']

如果你有办法声明这些名称空间,那么在1.0中使用前缀而不是local-name()会容易得多。

此外,您可以将整个路径包装在boolean()(XPath 1.0 / 2.0)或exists()(XPath 2.0)中,以返回truefalse