0

我收到以下肥皂消息,想知道如何编写 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 的用法。

谢谢

瓦伦

4

1 回答 1

4

您的 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']

于 2012-05-19T09:18:00.573 回答