在 dwl-Transform 消息中使用 xpath3
Using xpath3 in dwl-Transform Message
我想检查节点是否存在于 XML 负载中。为此,我想在 mule4 的 Transform Message 中使用 xpath3()。
输入:
<XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ABC xsi:nil="true"/>
<DEF/>
</XML>
数据编织代码:
%dw2.0
output application/json skipNullOn="everywhere"
---
if(xpath3('//:ABC',payload.XML,'BOOLEAN')
"abc": "yes
else
"abc": "no"
预期输出(
json):
{
"abc": "yes"
}
请帮我解决这个问题。
为什么要使用 xpath?您可以使用以下数据编织表达式获得相同的结果:
- 检查元素是否存在(是否为 nil)
%dw 2.0
output application/json skipNullOn="everywhere"
---
{
"abc": if (payload.XML.ABC?) "yes" else "no"
}
- 检查元素是否存在而不是 nil(当 ABC 有值时 nil 必须设置为 false 或删除):
%dw 2.0
output application/json skipNullOn="everywhere"
---
{
"abc": if (!isEmpty(payload.XML.ABC)) "yes" else "no"
}
使用这些表达式的输出示例:
DataWeave 2.x(在 Mule 4.x 中)没有 xpath3() 函数。如果出于某种原因您想在 DataWeave 中使用 XPATH,您将不得不自己开发该功能,但我建议您不要这样做。
推荐的方法是将其迁移到 DataWeave 表达式,如@olamiral 解决方案。
我想检查节点是否存在于 XML 负载中。为此,我想在 mule4 的 Transform Message 中使用 xpath3()。
输入:
<XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ABC xsi:nil="true"/>
<DEF/>
</XML>
数据编织代码:
%dw2.0
output application/json skipNullOn="everywhere"
---
if(xpath3('//:ABC',payload.XML,'BOOLEAN')
"abc": "yes
else
"abc": "no"
预期输出( json):
{
"abc": "yes"
}
请帮我解决这个问题。
为什么要使用 xpath?您可以使用以下数据编织表达式获得相同的结果:
- 检查元素是否存在(是否为 nil)
%dw 2.0
output application/json skipNullOn="everywhere"
---
{
"abc": if (payload.XML.ABC?) "yes" else "no"
}
- 检查元素是否存在而不是 nil(当 ABC 有值时 nil 必须设置为 false 或删除):
%dw 2.0
output application/json skipNullOn="everywhere"
---
{
"abc": if (!isEmpty(payload.XML.ABC)) "yes" else "no"
}
使用这些表达式的输出示例:
DataWeave 2.x(在 Mule 4.x 中)没有 xpath3() 函数。如果出于某种原因您想在 DataWeave 中使用 XPATH,您将不得不自己开发该功能,但我建议您不要这样做。
推荐的方法是将其迁移到 DataWeave 表达式,如@olamiral 解决方案。