使用readUrl加载XML后在DataWeave中更新e节点值的问题求助
你可以直接使用 DataWeave 内置的 update 运算符实现指定节点值的修改,不需要重构整个XML结构,完整脚本示例如下:
%dw 2.0 // 声明和原XML一致的soapenv命名空间 ns soapenv http://schemas.xmlsoap.org/soap/envelope/ output application/xml --- // 替换readUrl内的路径为你的XML实际地址 readUrl("你的XML文件路径", "application/xml") update // 按层级定位到e节点,修改值为true .soapenv#Envelope.soapenv#Body.a.c.e with "true"
兼容低版本DataWeave方案
如果你的运行环境使用的是2.3以下版本的DataWeave,不支持update运算符,可以用手动重构XML结构的方式实现:
%dw 2.0 ns soapenv http://schemas.xmlsoap.org/soap/envelope/ output application/xml var sourceXml = readUrl("你的XML文件路径", "application/xml") --- soapenv#Envelope @(xmlns:soapenv: soapenv): soapenv#Body: a: { b: sourceXml.soapenv#Envelope.soapenv#Body.a.b, c: { d: sourceXml.soapenv#Envelope.soapenv#Body.a.c.d, e: "true", f: sourceXml.soapenv#Envelope.soapenv#Body.a.c.f } }
注意事项
readUrl路径根据实际存储位置调整:本地文件使用file:///文件绝对路径格式,项目类路径下的资源使用classpath:文件名格式- 命名空间声明必须和原XML完全一致,否则会出现节点匹配失败的问题
内容的提问来源于stack exchange,提问作者jarmstrongnz
相关产品推荐
相关产品推荐

