Мул 3.6.1 xpath3

Я пытаюсь перенести свои приложения Mule 3.4 CE на Mule 3.6.1 CE и имею проблемы с xpath3.

Полезная нагрузка:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:itemMessage xmlns:ns2="http://test.com/messages">
    <requestId>QAREQ:150623_0002</requestId>
    <requestStatus>COMPLETE</requestStatus>
</ns2:itemMessage>

выражение xpath (рабочее)

#[xpath('string(//itemMessage/requestId/text())')]

выражение xpath3 (не работает)

#[xpath3('//itemMessage/requestId/text()', payload, 'STRING')]

Цените любое понимание.


person Tashani Kathriarachchi    schedule 24.06.2015    source источник
comment
Ваши выражения xpath вообще не соответствуют XML?   -  person Ryan Carter    schedule 25.06.2015


Ответы (1)


Ваше выражение Xpath не соответствует XML-документу. Но на основе XML-документа это работает:

<mulexml:namespace-manager
        includeConfigNamespaces="true">
   <mulexml:namespace prefix="ns2" uri="http://test.com/messages" />
</mulexml:namespace-manager>

<flow name="testFlow">
    <poll doc:name="Poll">
        <set-payload
            value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt; &lt;ns2:itemMessage xmlns:ns2=&quot;http://test.com/messages&quot;&gt; &lt;requestId&gt;QAREQ:150623_0002&lt;/requestId&gt; &lt;requestStatus&gt;COMPLETE&lt;/requestStatus&gt; &lt;/ns2:itemMessage&gt;"
            doc:name="Set Payload" />
    </poll>
    <logger level="INFO" message="#[xpath3('ns2:itemMessage/requestId/text()', payload, 'STRING')]" />
</flow>
person Ryan Carter    schedule 24.06.2015
comment
Я получаю эту ошибку. ОШИБКА 25-06-2015 11:02:23,778 [[testprj].testFlow.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy: ************** ******************************************************* *************** Сообщение: Не удалось выполнить выражение xpath3('ns2:itemMessage/requestId/text()', payload, 'STRING'). (org.mule.api.expression.ExpressionRuntimeException). Полезная нагрузка сообщения имеет тип: String - person Tashani Kathriarachchi; 25.06.2015
comment
Код: MULE_ERROR--2 ----------------------------------------------------------- ------------------------------------ Стек исключений: 1. Не объявлен префикс ns2 (net .sf.saxon.trans.XPathException) net.sf.saxon.expr.parser.XPathParser:263 (нулевой) - person Tashani Kathriarachchi; 25.06.2015
comment
Я пробовал в Mule 3.6.1 CE - person Tashani Kathriarachchi; 25.06.2015
comment
Это сработало, когда я добавил менеджер пространства имен. ‹mulexml:namespace-manager includeConfigNamespaces=true› ‹mulexml:namespace prefix=ns2 uri=test.com/messages› ‹/mulexml:менеджер-пространства имен› - person Tashani Kathriarachchi; 25.06.2015
comment
Да, вам нужно добавить менеджер пространства имен. Обновил мой ответ. - person Ryan Carter; 25.06.2015