Получить значение из сообщения SOAP с помощью Xpath - PullRequest
2 голосов
/ 22 марта 2011

Я пытаюсь получить значение из следующего сообщения SOAP, но, возможно, мой синтаксис в XPath не подходит

Используемый XPath:

/soap:Body/n0:RequestSystemGuidResponse/SystemGuid

Ошибка:

Error processing xml. Namespace prefix 'n0' is not defined.

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>

1 Ответ

5 голосов
/ 22 марта 2011

Вы не объявили префикс пространства имен 'n0' в среде, которая оценивает ваше выражение XPath.Объявления пространства имен, используемые в XPath, должны быть объявлены в среде, в которой используется XPath.

Если вам нужна помощь, как это сделать, расскажите нам, как вы используете XPath.Вы передаете "/ soap: Body / n0: RequestSystemGuidResponse / SystemGuid" определенному методу в определенном классе?в какой библиотеке?какой язык?Вы должны сказать ему, что префикс "n0" обозначает пространство имен, URI которого "urn: sap-com: document: sap: soap: functions: mc-style".

Очевидно, вы уже объявилипрефикс пространства имен «мыло», иначе вы бы тоже получили ошибку об этом.

Кроме того, как только вы это исправите, ваше выражение XPath нужно будет изменить, потому что сейчас оно будет работать, только еслиявляется элементом верхнего уровня во входном XML.Вместо

/soap:Body/n0:RequestSystemGuidResponse/SystemGuid

вам нужно

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

(при условии, что префикс soap объявлен для пространства имен, URI которого равен "http://schemas.xmlsoap.org/soap/envelope/").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...