2017-01-31 1 views
0

У меня есть запрос конверт SOAP, который выглядит примерно так:Mule- Синтаксический всех дочерних узлов определенного элемента из мыла Конверт

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tsh="http://mulesoft.org/tshirt-service"> 
    <soapenv:Header> 
     <tsh:AuthenticationHeader> 
     <apiKey>?</apiKey> 
     </tsh:AuthenticationHeader> 
    </soapenv:Header> 
    <soapenv:Body> 
     <tsh:OrderTshirt> 
     <size>xxl</size> 
     <email>[email protected]</email> 
     <name>xyz</name> 
     <address1>aaaa</address1> 
     <address2>asdf</address2> 
     <city>werty</city> 
     <stateOrProvince>sdd</stateOrProvince> 
     <postalCode>111111</postalCode> 
     <country>India</country> 
     </tsh:OrderTshirt> 
    </soapenv:Body> 
</soapenv:Envelope> 

Теперь здесь, мне нужно, чтобы разобрать все дочерние элементы <tsh:OrderTshirt> т.е. после разбора вывода должно быть что-то вроде этого:

<tsh:OrderTshirt> 
     <size>xxl</size> 
     <email>[email protected]</email> 
     <name>xyz</name> 
     <address1>aaaa</address1> 
     <address2>asdf</address2> 
     <city>werty</city> 
     <stateOrProvince>sdd</stateOrProvince> 
     <postalCode>111111</postalCode> 
     <country>India</country> 
     </tsh:OrderTshirt> 

Я идея для разбора одного элемента, объявляя пространства имен в менеджере пространства имен мула. (см. reading soap header element in payload).

Не уверен, как разбирать узел с его дочерними элементами.

Пожалуйста, поделитесь своими мыслями :)

ответ

0

ЗАВИСИТ немного то, что вы пытаетесь достичь. Телу нужно отправить в веб-сервис SOAP?

Или вы хотите извлечь значения?

Легко можно использовать DataWeave и никаких дополнительных деклараций пространства имен, необходимых в коде.

XML-будет ваша полезная нагрузка, и вы можете обратиться к кузову:

%dw 1.0 
%output application/xml 
--- 
payload.Envelope.Body 

Однако он будет выводить дополнительный XML заголовок сверху.

Посмотрите здесь, как удалить его:

https://forums.mulesoft.com/questions/51394/remove-xml-definition-from-dataweave-output.html

В противном случае используйте объявление пространств имен и использовать Set Payload и в качестве значения используйте выражение Xpath, которое относится к телу XML, так что становится полезной ,

Смежные вопросы