Mule 在dataweave 2.0中从var创建XML属性

Mule 在dataweave 2.0中从var创建XML属性,mule,dataweave,anypoint-studio,mule4,Mule,Dataweave,Anypoint Studio,Mule4,我有一个JSON输入: { abc: "", def: "hello" } 我想使这个空白元素在XML中为nillable,即。我正在使用以下dataweave代码: %dw 2,0 output application/xml skipNullOn="everywhere" var makeNil= (in) -> in match { case is Array -> in map makeNil($) ca

我有一个JSON输入:

{
  abc: "",
  def: "hello"

}
我想使这个空白元素在XML中为nillable,即。我正在使用以下dataweave代码:

%dw 2,0
output application/xml skipNullOn="everywhere"
var makeNil= (in) ->
in match {
case is Array -> in map makeNil($)
case is Object -> in mapObject (
if ( ($) == "")
  ($$) @(xsi#'nil':true): {}
else ($$): makeNil($)
)
else -> in
}
---
makeNil(payload)

我无法使用@(xsi#'nil':true)为键($)创建属性。请帮助我解决我在评论中提到的错误,添加根元素是有效的。记住,与JSON不同,XML需要根元素

%dw 2.0
output application/xml skipNullOn="everywhere"
ns xsi http://www.w3.org/2001/XMLSchema-instance
var makeNil= (in) ->
    in match {
        case is Array -> in map makeNil($)
        case is Object -> in mapObject (
            if ( ($) == "")
                ($$) @(xsi#'nil':true): {}
            else ($$): makeNil($)
        )
        else -> in
    }
---
top: makeNil(payload)
输入:

{
  "abc": "",
  "def": "hello"
}
输出:

<?xml version='1.0' encoding='UTF-8'?>
<top>
  <abc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
  <def>hello</def>
</top>

你好

在脚本执行之前,需要修复一些错误:JSON有效负载中的键未被引用,这是一个无效的JSON。版本分隔符是一个点,而不是逗号,并且没有定义xsi名称空间。输出的根元素是什么?提供预期输出的示例,以及实际结果或错误。