如何使用MEL或Dataweave对“ <”和“>”进行换行?
在原始xml下面
<dem>
<action dos="600" nom="infos_infinity">
<entite nom="GetAccount" lire_tout="oui">
<groupe_filtres op="ET">
<filtre op="OU">
<critere nom="Equal_TIERS">
<param><![CDATA[C0000033]]></param>
</critere>
<critere nom="Equal_TIERS">
<param><![CDATA[C0000016]]></param>
</critere>
</filtre>
<filtre op="ET">
<critere nom="Equal_DOS">
<param><![CDATA[600]]></param>
</critere>
</filtre>
</groupe_filtres>
<tri nom="BY_PK" />
</entite>
</action>
</dem>
和预期的XML
<web:param><dem>
<action dos="600" nom="infos_infinity">
<entite nom="GetAccount" lire_tout='oui'>
<groupe_filtres op='ET'>
<filtre op='OU'>
<critere nom="Equal_TIERS">
<param>
<![CDATA[C0000033]]>
</param>
</critere>
<critere nom="Equal_TIERS">
<param>
<![CDATA[C0000016]]>
</param>
</critere>
</filtre>
<filtre op='ET'>
<critere nom="Equal_DOS">
<param>
<![CDATA[600]]>
</param>
</critere>
</filtre>
</groupe_filtres>
<tri nom="BY_PK" />
</entite>
</action>
</dem></web:param>
我试图用“ <”替换“ <”,但是看起来dataweave只能替换字符串,因为我收到了xml,所以没有用。
是否可以在不创建Java代码或Groovy代码的情况下进行转换?
答案 0 :(得分:2)
是的,您可以使用MEL并将传入的有效负载设置为字符串值。以下是示例流程,但重要的部分是带有MEL表达式#[message.payloadAs(System.String)]
<flow name="/xml-encoding">
<http:listener config-ref="HTTP_Listener_Configuration" path="/xml-encoding" doc:name="HTTP"/>
<set-payload value="<dem>
<action dos="600" nom="infos_infinity">
<entite nom="GetAccount" lire_tout="oui">
<groupe_filtres op="ET">
<filtre op="OU">
<critere nom="Equal_TIERS">
<param><![CDATA[C0000033]]></param>
</critere>
<critere nom="Equal_TIERS">
<param><![CDATA[C0000016]]></param>
</critere>
</filtre>
<filtre op="ET">
<critere nom="Equal_DOS">
<param><![CDATA[600]]></param>
</critere>
</filtre>
</groupe_filtres>
<tri nom="BY_PK" />
</entite>
</action>
</dem>" mimeType="text/xml" doc:name="Set Payload"/>
<set-payload value="#[message.payloadAs(System.String)]" doc:name="Set Payload"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/xml
---
{
'web:param': payload
}]]></dw:set-payload>
</dw:transform-message>
</flow>