Как встроить CDATA в Mulesoft

Я пытаюсь встроить буквальное значение CDATA в поток Mulesoft и не могу понять, как это сделать.

Мой желаемый результат (в теле HTTP-запроса):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <query xmlns="http://autotask.net/ATWS/v1_5/">
            <sXML>
                <![CDATA[<queryxml><entity>ticket</entity><query><condition><field>id<expression op="equals">12345</expression></field></condition></query></queryxml>]]>
            </sXML>
        </query>
    </soap:Body>
</soap:Envelope>

Моя трансформация Dataweave выглядит следующим образом:

%dw 1.0
%output application/xml
%namespace soap http://schemas.xmlsoap.org/soap/envelope
---
{
    soap#Envelope @(version: "1.0") : {                  
        soap#Header: {},
        soap#Body: {
            query: {                
                sXML: "<queryxml><entity>ticket</entity><query><condition><field>id<expression op=\"equals\">12345</expression></field></condition></query></queryxml>"                     
            }
        }
    }
}

Но когда я отправляю этот запрос в requestb.in (для проверки содержимого), я вижу, что он проходит следующим образом (сфокусируйтесь на сущности sXML):

<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" version="1.0">
  <soap:Header/>
  <soap:Body>
    <query>     
      <sXML>&lt;queryxml>&lt;entity>ticket&lt;/entity>&lt;query>&lt;condition>&lt;field>id&lt;expression op="equals">12345&lt;/expression>&lt;/field>&lt;/condition>&lt;/query>&lt;/queryxml></sXML>
    </query>
  </soap:Body>
</soap:Envelope>

Как я могу получить буквальное значение CDATA через dataweave / MEL?

Спасибо.


person Steve N    schedule 06.10.2016    source источник


Ответы (2)


Я бы попробовал:

sXML: "<queryxml> .... </queryxml>" as :cdata

См. https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-formats#custom-types-2 для получения дополнительной информации.

person Chad Gorshing    schedule 06.10.2016

handleInteractiveOrder: записать (vars.subm.soap # Envelope.soap # Body.cp # handleInteractiveOrder, «application / xml») как CData

в муле 4 мы можем это сделать. Я сохранил свой XML в переменной subm.

person Anil Kumar    schedule 27.11.2019