【问题标题】:Convert XML CDATA format into JSON format in dataweave 2.0 Mule4在dataweave 2.0 Mule4中将XML CDATA格式转换为JSON格式
【发布时间】: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

【问题讨论】:

    标签: dataweave mulesoft


    【解决方案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"
            }
          }
        }
        

        【讨论】:

        • 我已经更新了我的代码。我尝试了您的解决方案,我得到 0 ...' 作为 'application/XML' 原因是:拥有多个根是非法的(结语中的开始标记?)。错误
        • 您的 xml 格式错误。需要有一个根元素,其余的可以嵌套在该根节点下。 XML 不允许多个根元素。
        • 我在回答中更新了您的输入样本。 HTH
        • 这是我得到的 XML 响应。我们可以使用 dataweave 代码添加或删除根元素吗??
        • 地址是一个数组,地址是对象我需要结果作为对象数组。
        猜你喜欢
        • 2021-02-22
        • 2011-07-04
        • 2020-08-30
        • 1970-01-01
        • 2022-11-18
        • 1970-01-01
        • 2021-07-28
        • 2011-06-14
        相关资源
        最近更新 更多