基于包含路径数据的内容搜索xml元素
我有以下xml:基于包含路径数据的内容搜索xml元素,xml,xpath,groovy,soapui,Xml,Xpath,Groovy,Soapui,我有以下xml: <Summary> <Decision>-1</Decision> <Reasons> <Reason> <Element>Address/Postcode</Element> <Decision>1</Decision> </Reason> <Reason> <Element>Na
<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>
但我在尝试获取身份证明文件时失败:
//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
如何搜索此行?您应该将原始xpath引用放在包含它的元素中。这样,解析器将忽略它,并且您的路径将是有效的 例如:
<Reason>
<Element><![CDATA[IdentityDocument[@TypeOfDocument='NationalId']/Number]]></Element>
<Decision>4</Decision>
</Reason>
4.
您的XPath包含的引号不正确。你可能是说:
//Reasons/Reason[Element="IdentityDocument[@TypeOfDocument='NationalId']/Number"]/Decision
您还可以使用contains()
函数,如下所示:
//Reason[Element[contains(., 'IdentityDocument')]]/Decision
//Reason[Element[contains(., 'IdentityDocument')]]/Decision