如何在Dataweave中映射SQLXML

时间:2017-10-25 19:06:11

标签: mule anypoint-studio sqlxml dataweave

我正在努力研究如何引用我从调用外部API获得的响应中的字段,该外部API以下面的格式返回响应,该格式看起来像来自MSSQL数据库的XML:

<Depts>
    <Dept DeptCode="1" DeptName="Sales">
        <Employees>
            <Employee EmpCode="1234" EmpRole="Sales" DateUpdated="2017-10-17T10:23:09.950"/>
            <Employee EmpCode="56" EmpRole="Supervisor" DateUpdated="2017-09-17T10:23:09.950"/>
        </Employees>
    </Dept>
    <Dept DeptCode="2" DeptName="HR">
        <Employees>
            <Employee EmpCode="84848" EmpRole="Advisor" DateUpdated="2017-10-17T10:23:09.950"/>
            <Employee EmpCode="12" EmpRole="Director" DateUpdated="2016-10-17T10:23:09.950"/>
        </Employees>
    </Dept>
</Depts>

我需要将它转换为json,如下所示:

{
    "Depts": [{
            "DeptCode": "1",
            "DeptName": "Sales",
            "Employees": [{
                    "EmpCode": "1234",
                    "EmpRole": "Sales",
                    "DateUpdated": "2017-10-17T10:23:09.950"
                },
                {
                    "EmpCode": "56",
                    "EmpRole": "Supervisor",
                    "DateUpdated": "2017-09-17T10:23:09.950"
                }
            ]

        },
        {
            "DeptCode": "2",
            "DeptName": "HR",
            "Employees": [{
                    "EmpCode": "84848",
                    "EmpRole": "Advisor",
                    "DateUpdated": "2017-10-17T10:23:09.950"
                },
                {
                    "EmpCode": "12",
                    "EmpRole": "Director",
                    "DateUpdated": "2016-10-17T10:23:09.950"
                }
            ]

        }
    ]
}

如何使用Anypoint Studio 6.2和Mule 3.8.3中的转换消息组件在Dataweave中执行此操作?

由于

1 个答案:

答案 0 :(得分:0)

如果你在有效负载中提取并获取XML值,那么这里是获得预期结果所需的数据编码:

%dw 1.0
%output application/json
---
{
    Depts:payload.Depts map {
    DeptCode:$.@DeptCode,
    DeptName: $.@DeptName,
    Employees: $.Employees map {
                 EmpCode: $.@EmpCode,
                 EmpRole: $.@EmpRole,
                 DateUpdated: $.@DateUpdated
                }

    }
}