使用Xpath从SOAP消息获取值

使用Xpath从SOAP消息获取值,soap,xpath,Soap,Xpath,我试图从下面的SOAP消息中获取一个值,但可能我的XPath语法不好 我正在使用的XPath: /soap:Body/n0:RequestSystemGuidResponse/SystemGuid 错误: 处理xml时出错。名称空间 未定义前缀“n0”。 SOAP XML: <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header>

我试图从下面的SOAP消息中获取一个值,但可能我的XPath语法不好

我正在使用的XPath:

/soap:Body/n0:RequestSystemGuidResponse/SystemGuid
错误:

处理xml时出错。名称空间 未定义前缀“n0”。

SOAP XML:

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header></soap-env:Header>
    <soap-env:Body>
        <n0:RequestSystemGuidResponse 
            xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
            <Errors></Errors>
            <SystemGuid>E050831C9CA1D1F1A9FC005056B95649</SystemGuid>
        </n0:RequestSystemGuidResponse>
    </soap-env:Body>
</soap-env:Envelope>

E050831C9CA1D1A9FC005056B95649

您尚未向评估XPath表达式的环境声明名称空间前缀“n0”。 XPath中使用的命名空间声明需要在使用XPath的环境中声明

如果您需要关于如何实现这一点的帮助,请告诉我们您是如何使用XPath的。是否将“/soap:Body/n0:RequestSystemGuidResponse/SystemGuid”传递给特定类上的特定方法?在哪个图书馆?什么语言?您需要告诉它,“n0”前缀表示URI为“urn:sapcom:document:sap:soap:functions:mc-style”的名称空间

显然,您已经声明了名称空间前缀“soap”,否则您也会得到一个错误

此外,一旦修复了这个问题,您的XPath表达式将需要修改,因为现在只有在输入XML中的顶级元素为时,它才起作用。 而不是

/soap:Body/n0:RequestSystemGuidResponse/SystemGuid
你需要

/*/soap:Body/n0:RequestSystemGuidResponse/SystemGuid

(假设为URI为的命名空间声明了
soap
前缀)http://schemas.xmlsoap.org/soap/envelope/)。

您有一些代码吗?