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

DataWeave 2.0如何按属性名称提取指定XML元素的取值

DataWeave 2.0 提取指定属性XML元素值方案

实现核心逻辑:DataWeave 中解析XML后,元素的属性通过@符号访问,遍历所有Property节点后筛选符合name属性要求的NameValue元素,直接读取元素值即可得到对应文本内容。

最简实现代码

%dw 2.0
output application/json
---
// 直接筛选匹配目标属性的元素取值
payload.root.UserArea.PropertyList.*Property
    .NameValue[?($.@name == "xxx.UDFCHAR10")][0]

代码说明:

  • *Property :获取PropertyList下所有Property节点,返回数组格式
  • [?($.@name == "xxx.UDFCHAR10")]:过滤器语法,遍历所有NameValue元素,匹配name属性为目标值的节点
  • 末尾[0]:取第一个匹配到的结果,避免返回数组,若存在多个匹配项可删除该后缀获取全部符合条件的值
  • 上述代码直接返回结果为"ABC",符合需求

可复用封装方案

如果需要频繁提取这类自定义字段,可封装为通用函数:

%dw 2.0
output application/json

// 定义通用提取函数,入参为PropertyList节点、目标name属性值
fun getUDFValue(propList, udfName) = 
    propList.*Property.NameValue[?($.@name == udfName)][0] default "无匹配结果"
---
// 调用函数取值
getUDFValue(payload.root.UserArea.PropertyList, "xxx.UDFCHAR10")

说明:追加default语法可以处理匹配不到值的场景,避免返回null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:45:03