2013-04-22 86 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