XPath noob再次来到这里。我从Web服务器获得此响应。如您所见,所有元素都是真实的。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com">
<soapenv:Header>
<LimitInfoHeader>
<limitInfo>
<current>284</current>
<limit>5000000</limit>
<type>API REQUESTS</type>
</limitInfo>
</LimitInfoHeader>
</soapenv:Header>
<soapenv:Body>
<createResponse>
<result>
<id>a05e00000042oZ1AAI</id>
<success>true</success>
</result>
<result>
<id>a06e0000008TWdlAAG</id>
<success>true</success>
</result>
<result>
<id>a06e0000008TWdmAAG</id>
<success>true</success>
</result>
</createResponse>
</soapenv:Body>
</soapenv:Envelope>
我的问题是,如何编写一个函数,如果一个或多个成功变量为false,将返回一个布尔变量。有点像AND门。
我目前有:
//[contains(text(),'false')])
但这总是会返回false。
任何帮助都将不胜感激。
答案 0 :(得分:1)
首先,您需要考虑本文档中的名称空间。但暂时忽略名称空间问题,
not(//*[local-name() = 'success'] = 'false')
是一个返回布尔值的XPath表达式。如果输入文档中的没有 true
元素且文本内容为success
,则返回false
。只要有一个看起来像
<success>false</success>
路径表达式返回false
。
如果您打算测试反向条件,即如果至少有一个true
则返回<success>false</success>
,请使用
//*[local-name() = 'success'] = 'false'
考虑一个名称空间意味着使用您正在使用的编程语言重新声明,并在XPath表达式中为元素名称添加前缀。