2013-04-22 85 views
2

我试图确定肥皂信封体是否包含特定节点。使用XPath检查肥皂信封是否包含子节点

我的工作包络的一个例子:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <Response> 
      <Result>Failure</Result> 
      <Error id="40020" value="">An Unkown Error Occured</Error> 
     <Response> 
    </soapenv:Body> 
</soapenv:Envelope> 

我要检查是否包含节点“响应”这样我就可以,结果在其上执行条件操作。我对XPath比较陌生,所以我不确定完整的表达式应该是什么。

XPath表达式我目前已经是

[name(//soapenv:Body/*[1]) = 'Response'] 

我知道名字(// soapenv:身体/ * [1])将返回“响应”的价值,我只是不知道如何将该结果与另一个值进行比较并返回true/false。

也许像这样的一个替代表达式?

//soapenv:Body/*[contains(Name, "Response")] 

回答

1

尝试这些:

//soapenv:Body/*[name()='Response'] 

或者,如果响应可不仅仅是身体的孩子更深(不应该如此)

//soapenv:Body/descendant::*[name()='Response'] 
+0

完美!这正是我所需要的。这两个示例中的第一个工作 - 我不应该让Response节点比第一个孩子更深。 – keannan5390 2013-04-22 20:34:29

+0

正在接近它,你最初在10分钟的门槛内张贴,我不得不等待标记为答案。 – keannan5390 2013-04-22 21:24:08