首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于路径数据的内容搜索xml元素

基于路径数据的内容搜索xml元素
EN

Stack Overflow用户
提问于 2014-11-07 17:51:25
回答 2查看 829关注 0票数 0

我有以下xml:

代码语言:javascript
复制
<Summary>
<Decision>-1</Decision>
<Reasons>
   <Reason>
      <Element>Address/Postcode</Element>
      <Decision>1</Decision>
   </Reason>
   <Reason>
      <Element>Name/Firstname</Element>
      <Decision>13</Decision>
   </Reason>
   <Reason>
      <Element>Name/Lastname</Element>
      <Decision>1</Decision>
   </Reason>
   <Reason>
      <Element>IdentityDocument[@TypeOfDocument='NationalId']/Number</Element>
      <Decision>4</Decision>
   </Reason>
   <Reason>
      <Element>DOB</Element>
      <Decision>17</Decision>
   </Reason>
</Reasons>   
</Summary>

我试着读一个基于元素的决定。对他们大多数人来说,这很简单:

代码语言:javascript
复制
//Reasons/Reason[Element='Name/Firstname']/Decision

但当我试图获得IdentityDocument时,我失败了:

代码语言:javascript
复制
//Reasons/Reason[Element='IdentityDocument[@TypeOfDocument='NationalId']/Number']/Decision

Error
net.sf.saxon.trans.XPathException: XPath syntax error at char 125 in {...Document='NationalId']/Numb...}: expected "]", found name "NationalId"

当我尝试转义\'NationalId\‘时,它返回相同的错误,替换为双引号\"NationalId\“编译,但是没有找到正确的决定"4”,而是得到[]

我正在使用SoapUI,它是Groovy脚本语言来读取xml。

我该怎么搜索这条线?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-07 20:42:48

您的XPath不正确地括了引号。你可能是说:

代码语言:javascript
复制
//Reasons/Reason[Element="IdentityDocument[@TypeOfDocument='NationalId']/Number"]/Decision

还可以使用contains()函数,如下所示:

代码语言:javascript
复制
//Reason[Element[contains(., 'IdentityDocument')]]/Decision
票数 1
EN

Stack Overflow用户

发布于 2014-11-07 17:58:47

您应该将原始xpath引用放在一个元素中,包括它作为CDATA。这样,解析器就会忽略它,您的路径将是有效的。

示例:

代码语言:javascript
复制
<Reason>
   <Element><![CDATA[IdentityDocument[@TypeOfDocument='NationalId']/Number]]></Element>
   <Decision>4</Decision>
</Reason>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26807098

复制
相关文章

相似问题

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