You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DataWeave(Mule)在XML结构Payload中添加新标签

在DataWeave中为XML Payload添加新标签

由于你没有提供图1(原XML)和图2(目标XML)的具体结构,我将基于常见的XML节点添加场景给出示例方案,你可以根据实际结构调整脚本。

示例场景说明

原XML(图1)

<Order>
  <OrderId>123</OrderId>
  <Customer>
    <Name>John Doe</Name>
  </Customer>
</Order>

目标XML(图2)

假设需要在<Order>节点下新增<Shipping>子节点,或在<Customer>下新增<Email>子节点,以下是对应实现:


方案1:新增固定内容的顶层节点

如果要在<Order>下添加固定内容的<Shipping>节点,DataWeave脚本如下:

%dw 2.0
output application/xml
---
payload update {
  case order at .Order -> order ++ {
    Shipping: {
      Address: "123 Main St",
      City: "New York"
    }
  }
}

关键语法说明

  • update:用于定位并修改指定XML节点
  • case ... at ...:通过节点路径(如.Order)精准定位要修改的目标节点
  • ++:合并原节点内容与新节点,保留原有结构的同时添加新元素

方案2:基于原数据动态添加节点

如果新标签的内容需要从原Payload中提取生成(比如从客户姓名生成邮箱),脚本如下:

%dw 2.0
output application/xml
var customerFullName = payload.Order.Customer.Name
---
payload update {
  case customer at .Order.Customer -> customer ++ {
    Email: (customerFullName splitBy " " joinBy ".") ++ "@example.com"
  }
}

执行后生成的XML:

<Order>
  <OrderId>123</OrderId>
  <Customer>
    <Name>John Doe</Name>
    <Email>John.Doe@example.com</Email>
  </Customer>
</Order>

方案3:添加深层嵌套节点

如果需要在已有的子节点下新增标签(比如给<Shipping>加<TrackingNumber>),脚本如下:

%dw 2.0
output application/xml
---
payload update {
  case shipping at .Order.Shipping -> shipping ++ {
    TrackingNumber: "TRK-456789"
  }
}

适配你的实际结构

只要替换脚本中的节点路径(如.Order、.Order.Customer)和新节点的内容,就能匹配你图1和图2的实际结构。

内容的提问来源于stack exchange,提问作者hichem rtibi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:57:27