检查XML元素是否具有xsi:nil =“ true”

问题描述

我有一个元素<ABC xsi:nil="true">。我想在dataweave 2.0中编写一个条件来检查此xsi:nil的值,如果它等于“ true”,我想在JSON中转换为"ABC": null,则在其中使用skipNullOn =“ everywhere”脚本。我尝试使用payload.ABC.@nil == "true",但它给出的是null

解决方法

这可能有帮助。

%dw 2.0
output application/json skipNullOn="everywhere"
fun replaceElementAndAttribute(value:Any,name: String,newValue: Any) = do {
    value match {
        case obj is Object -> obj mapObject ((value,key,index) -> 
            if(key.@nil  ~= "true")
                (key): "null"
            else    
                (key) @((replaceElementAndAttribute(key.@,name,newValue))): replaceElementAndAttribute(value,newValue)
        )
        else -> value
    }
}   
---
replaceElementAndAttribute(payload,"","")

这类似于所提到的here

但是,通过此递归函数,它将以“ null”字符串的形式输出值。