在 dataweave 2.0 Mule4 中将 XML CDATA 格式转换为 JSON 格式
Convert XML CDATA format into JSON format in dataweave 2.0 Mule4
下面是我的示例 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
试试这个脚本:
输入
<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"
}
}
}
补充 Salim 的回答,您可以尝试使用以下 DataWeave 表达式来访问 Addresses 元素:
%dw 2.0
output application/json
---
read("<root>" ++ payload.DATA ++ "</root>", "application/xml").root.Addresses
思路是用根节点包裹DATA内容,然后用它来访问内部元素。
我按照你的指示行事了。
变形金刚 1:
%dw 2.0
输出 application/json
阅读(payload.DATA, "application/xml")
变形金刚2:
%dw 2.0
输出 application/java
写入(有效负载,'application/xml')
谢谢
dk
下面是我的示例 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
试试这个脚本:
输入
<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"
}
}
}
补充 Salim 的回答,您可以尝试使用以下 DataWeave 表达式来访问 Addresses 元素:
%dw 2.0
output application/json
---
read("<root>" ++ payload.DATA ++ "</root>", "application/xml").root.Addresses
思路是用根节点包裹DATA内容,然后用它来访问内部元素。
我按照你的指示行事了。 变形金刚 1:
%dw 2.0 输出 application/json
阅读(payload.DATA, "application/xml")
变形金刚2:
%dw 2.0 输出 application/java
写入(有效负载,'application/xml')
谢谢 dk