在 dataweave 中读取带有命名空间的 XML

问题描述 投票:0回答:1

我正在尝试读取 xml 并将 if else 条件放在某个标记上。如果数据存在,我需要打印 true 否则 false。下面是我正在尝试读取的示例 XML:

<?xml version='1.0' encoding='ISO-8859-1'?>
<ns01:active xmlns:ns01="http://Atlas.Schemas.Policy/1.0">
  <Id>
    <groupId>66d9057f-0951-4970-86d6-4d69d3572abe</groupId>
  </Id>
</ns01:active>

我尝试使用这个 dataweave 代码,但它对我不起作用:

 if(payload.active.Id.groupId != null) "true" else "False"
mule dataweave mule4 mule-esb
1个回答
0
投票

您遇到的问题与命名空间的使用无关。请注意,无法在纯 XML 中表示

null

如果您想在元素存在(即有一个具有该名称的键)独立于其值(即元素内的内容)时返回 true,那么您可以使用 key-present 选择器(即添加一个

? 
键名后面有问号)。

如果您想查看元素的值是否为空,您可以使用函数 isEmpty()。您可以使用 not 运算符 (

!
) 来否定其返回值。

示例:

%dw 2.0
output application/json
---
{
    keyPresentSelector: payload.active.Id.groupId?,
    hasValue: !isEmpty(payload.active.Id.groupId)
}

输出:

{
  "keyPresentSelector": true,
  "hasValue": true
}
© www.soinside.com 2019 - 2024. All rights reserved.