2

我正在尝试在数据编织器中创建 XML 时实现默认命名空间。我在数据编织器文档和早期帖子中进行了思考。对此没有任何线索。我们如何声明默认命名空间。

https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-tutorial

我的输入将来自 DB - 链表。输出是 XML。

%dw 1.0
%namespace ns0 urn:abc:def:Components
%output application/xml
---
{
    ns0#University: {
        college: payload.college[0],
        (payload map ((payload01 , indexOfPayload01) -> {
            dept: {
                deptName: payload01.dept,
                Noofstudents: payload01."No of students" as :number
            }
        }))
    }
}

电流输出为

<ns0:University xmlns:ns0="urn:abc:def:Components">
<college>abc</college> <!-- this is simple tag/ It will not repeat -->
<dept> <!-- This is complex tag -->
   <dept Name>IT</dept Name>
   <No of students>5</No of students>
</dept>
<dept>
   <dept Name>IT</dept Name>
   <No of students>5</No of students>
</dept>
<dept>
   <dept Name>IT</dept Name>
   <No of students>5</No of students>
</dept>
</ns0:University>

预期输出为

<University xmlns="urn:abc:def:Components">
<college>abc</college> <!-- this is simple tag/ It will not repeat -->
<dept> <!-- This is complex tag -->
   <dept Name>IT</dept Name>
   <No of students>5</No of students>
</dept>
<dept>
   <dept Name>IT</dept Name>
   <No of students>5</No of students>
</dept>
<dept>
   <dept Name>IT</dept Name>
   <No of students>5</No of students>
</dept>
<University>
4

2 回答 2

1

对于上述问题的解决方案,您可以将xmlns="urn:abc:def:Components"as 属性添加到“大学”标签。不要在这里使用命名空间逻辑,否则它将创建带有ns0#命名空间的大学标签。

就像大学一样@(xmlns:"urn:abc:def:Components")

于 2019-09-03T07:23:40.730 回答
0

我找不到通过 DataWeave 在请求 xml 构造中实现默认命名空间的解决方案。

虽然我可以使用以下类型的 Dataweave 作为临时解决方案。在所有请求 xml 标记中附加了命名空间“ns0#”。

如果有任何最简单的方法,请告诉我。

%dw 1.0
%namespace ns0 urn:abc:def:Components
%output application/xml
---
{
    ns0#University: {
        ns0#college: payload.college[0],
        (payload map ((payload01 , indexOfPayload01) -> {
            ns0#dept: {
                ns0#deptName: payload01.dept,
                ns0#Noofstudents: payload01."No of students" as :number
            }
        }))
    }
}
于 2015-12-17T04:55:25.690 回答