如何用DataWeave 2.0输出含多个子元素的XML?
DataWeave 2.0 生成包含多子元素的XML
先看一个基础的DataWeave生成XML的示例:
%dw 2.0 output application/xml --- a: b: c: "content"
输出结果:
<?xml version='1.0' encoding='UTF-8'?> <a> <b> <c>content</c> </b> </a>
现在想要在<b>标签下同时包含<c>和<d>两个子元素,目标输出如下:
<?xml version='1.0' encoding='UTF-8'?> <a> <b> <c>content</c> <d>dontent</d> </b> </a>
之前尝试的代码会报错:
%dw 2.0 output application/xml --- a: b: c: "content", d: "dontent"
报错信息:
Invalid input ',', expected ???
去掉逗号直接加d:也无法正常运行,正确的做法是把<b>下的多个子元素用大括号包裹成一个对象,代码如下:
%dw 2.0 output application/xml --- a: { b: { c: "content", d: "dontent" } }
或者也可以写成换行缩进的形式,效果完全一致:
%dw 2.0 output application/xml --- a: b: { c: "content", d: "dontent" }
运行后就能得到目标XML输出。
原理很直白:在DataWeave语法里,当需要一个父节点包含多个子节点时,必须把这些子节点定义为一个对象(用{}包裹),这样解析器才能识别它们属于同一个父节点下的子元素,而不是错误的语法结构。不需要转换JSON或其他格式,直接用原生DataWeave语法就能实现。
内容的提问来源于stack exchange,提问作者Bolchojeet
相关产品推荐
相关产品推荐

