在 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