Dataweave XML到XML映射

时间:2015-09-17 14:52:13

标签: xml mule mule-studio dataweave

我的输入XML:

<Orders>
<Order><sample att="a1">b1</sample></Order>
<Order><sample att="a2">b2</sample></Order>
<Order><sample att="a3">b3</sample></Order>
.
.
.
.
</Orders>

我的要求:

<Orders>
<Order><sample>a1||b1</sample></Order>
<Order><sample>a2||b2</sample></Order>
<Order><sample>a3||b3</sample></Order>
.
.
.
.
</Orders>

我需要在 dataweave组件中实现这一点。我在datamapper中也尝试过使用一些规则选项但没有结果。所以,请帮助我。我需要在dataweave组件中实现这一点。带语法的代码片段确实非常有用。

2 个答案:

答案 0 :(得分:4)

请查看此处的示例和文档:http://mulesoft.github.io/data-weave/#_xml_to_json

它提供了有关如何访问xml属性和元素等的示例。以下是适用于您的场景的可能的Dataweave脚本

<Wall>
  <Actual>
    <Specifications>
      <Insertion> 375.6858 916.8871 0.0000 </Insertion>
      <Angle> 3.14159 </Angle>
      <WallDesc> E4-1, H: 8' 1 1/8, Sh: Yes, S: 2~4~2~9-0-0~SPF~~, Spc: Single @ 16 in OC, BP: 2~4~2~12-0-0~SYP~~, CP: 2~4~2~12-0-0~SYP~~, TP: 2~4~2~12-0-0~SYP~~,\P LI: Single @ 38.75000000, CB: No, VB: No, NCT: 2~4~2~9-0-0~SPF~~, CT: 2~4~2~9-0-0~SPF~~, Pac: 2~4~2~9-0-0~SPF~~, Mir: Yes </WallDesc>
      <WallNum> 1 </WallNum>
      <VaporBarrier></VaporBarrier>
    </Specifications>
  </Actual>
</Wall>

答案 1 :(得分:1)

您可以使用:

%dw 0.1
%input payload application/xml
%output application/xml
---
Orders: { 
    (payload.Orders.*Order map {
        Order: {
           sample: $.@att ++ "||" ++ $.sample,
              }
        }
    ) 
}