2012-05-19 60 views
0

我已經得到以下soap消息,並且想知道如何編寫xpath查詢來提取GetNewGUIDResult?XPATH:從SOAP消息中提取數據

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Header> 
<ActivityId CorrelationId="06996737-224f-4004-9dad-042222b161fc" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">b89cdee8-18b4-4ea0-a5a1-7b10ace1b23e</ActivityId> 
</s:Header> 
<s:Body> 
<GetNewGUIDResponse xmlns="http://bank.co.com/Service/2011_01/Service"> 
<GetNewGUIDResult>125959</GetNewGUIDResult> 
</GetNewGUIDResponse> 
</s:Body> 
</s:Envelope> 

我嘗試了一些xpath命令,但它們給出了例外。另外我不確定使用xmlnamespacemanager。

感謝

Varun的

回答

3

你的XPath表達式應該像:

/soap:Envelope/soap:Body/srv:GetNewGUIDResponse/srv:GetNewGUIDResult/text()

您將需要聲明命名空間前綴。我不知道你用的是什麼API,但你需要聲明下面的空間前綴,使你上面的表達式工作:

肥皂 - >http://schemas.xmlsoap.org/soap/envelope/ SRV - >http://bank.co.com/Service/2011_01/Service

如果你不」不想申報命名空間,並使用XPath 2.0處理器也可以做到以下幾點(但不推薦!)

/s:Envelope/s:Body/*[namespace-uri()='http://bank.co.com/Service/2011_01/Service' and local-name()='GetNewGUIDResponse']/*[namespace-uri()='http://bank.co.com/Service/2011_01/Service' and local-name()='GetNewGUIDResult']

+0

感謝。但是這個svr是什麼?我使用Microsoft的xpath和xml類(使用System.XML.XPath)。 – VVV

+0

我無法修改包含SOAP消息的xml文件。 – VVV

+0

您不必更改SOAP消息。您可以在您的XPath中任意指定名稱空間前綴(將其命名爲與XML文檔中相同的名稱不是「解決方案」)。您需要使用XPath API將前綴綁定到名稱空間URI。 –