我有以下soap消息,想知道如何编写xpath查询来提取GetNewGUIDResult?
<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的
答案 0 :(得分:3)
您的XPath表达式应该像:
/soap:Envelope/soap:Body/srv:GetNewGUIDResponse/srv:GetNewGUIDResult/text()
您需要声明名称空间前缀。我不知道您正在使用什么API,但是您需要声明以下名称空间前缀以使上述表达式适合您:
肥皂 - &gt; http://schemas.xmlsoap.org/soap/envelope/ srv - &gt; 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']