首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用xPath表达式获取key的值

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

Stack Overflow用户
提问于 2013-03-16 05:44:22
回答 1查看 169关注 0票数 0

我需要编写一个XPath表达式来计算键'ErrorCode‘的值是否在XML处= -3025:

代码语言:javascript
复制
<?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>

请注意,元素有前缀。

EN

回答 1

Stack Overflow用户

发布于 2013-03-16 05:55:02

XPath 2.0:

代码语言:javascript
复制
/*:Envelope/*:esb-header/*:params/*:param[*:param-name='ErrorCode' and *:param-value='-3025']

对于XPath 1.0,您可以改用local-name() (讨厌):

代码语言:javascript
复制
/*[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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15442591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档