首页 > 解决方案 > 检查 XML 元素是否具有 xsi:nil="true"

问题描述

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

标签: muledataweavemule4

解决方案


这可能会有所帮助。

%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, name, newValue)
        )
        else -> value
    }
}   
---
replaceElementAndAttribute(payload,"", "")

这类似于这里提到的内容。

然而,使用这个递归函数,它会将值输出为“null”字符串。


推荐阅读