在dataweave 2.0 Mule4中将XML CDATA格式转换为JSON格式
Posted
技术标签:
【中文标题】在dataweave 2.0 Mule4中将XML CDATA格式转换为JSON格式【英文标题】:Convert XML CDATA format into JSON format in dataweave 2.0 Mule4 【发布时间】:2021-05-22 06:26:21 【问题描述】:以下是我的示例 XML 响应
<DATA><![CDATA[
<RESULT>0</RESULT>
<Addresses>
<Address>
...............
</Address>
<Address>
...............
</Address>
<Address>
...............
</Address>
</Addresses>
]]></DATA>
我想将其转换为 JSON 对象数组。我使用了下面的代码,但它只是返回 CDATA 字符串,而不是 JSON 格式
%dw 2.0
output application/json encoding="UTF-8"
---
payload
我在 Mule 4 中使用 dataweave 2.0
【问题讨论】:
【参考方案1】:我按照您的指示进行了操作,并且成功了。 变压器 1:
%dw 2.0 输出应用程序/json
读取(payload.DATA, "application/xml")
变形金刚 2:
%dw 2.0 输出应用程序/java
写入(有效负载,'应用程序/xml')
谢谢 dk
【讨论】:
【参考方案2】:补充 Salim 的回答,您可以尝试使用以下 DataWeave 表达式来访问 Addresses 元素:
%dw 2.0
output application/json
---
read("<root>" ++ payload.DATA ++ "</root>", "application/xml").root.Addresses
想法是用根节点包装DATA内容,然后用它来访问内部元素。
【讨论】:
【参考方案3】:试试这个脚本:
输入
<DATA><![CDATA[
<Person>
<RESULT>0</RESULT>
<Addresses>
<Address>
...............
</Address>
<Address>
...............
</Address>
<Address>
...............
</Address>
</Addresses>
</Person>
]]></DATA>
脚本
%dw 2.0
output application/json
---
read(payload.DATA, "application/xml")
输出
"Person":
"RESULT": "0",
"Addresses":
"Address": "\n ...............\n",
"Address": "\n ...............\n",
"Address": "\n ...............\n"
【讨论】:
我已经更新了我的代码。我尝试了您的解决方案,我得到以上是关于在dataweave 2.0 Mule4中将XML CDATA格式转换为JSON格式的主要内容,如果未能解决你的问题,请参考以下文章
从dataweave 2.0 Mule 4中的父JSON对象中提取JSON键值对的子集作为对象
Mule 4:Dataweave 2.0:如何处理大小超过10k的数据库记录?