dataweave - 无法将多值选择器的结果传递给 CONTAINS 函数
问题描述
我有一个输入 xml。我想评估一个使用“包含”函数的条件为真或假。这是输入的xml
<?xml version='1.0' encoding='UTF-8'?>
<root>
<order>
<items>155</items>
</order>
<order>
<items>30</items>
</order>
<order>
<items>15</items>
</order>
<order>
<items>5</items>
</order>
<order>
<items>4</items>
<items>7</items>
</order>
<order>
<items>1</items>
<items>3</items>
</order>
<order>
null
</order>
</root>
我想检查天气上述 xml 中项目的值是否包含 3。所以我尝试了这段代码。
%dw 1.0
%output application/xml
---
{
Orders : payload.root.*order mapObject (
doesItContains : $.*items contains "3"
)}
它给了我这样的错误。
Type mismatch for 'contains' operator
found :null, :string
required :array, :any or
required :string, :string or
required
:string, :regex
但是当我这样尝试时,它工作正常
{
Orders : payload.root.*order mapObject (
doesItContains : $ mapObject (
contains3: $ contains "3"
)
)
}
它给出了预期的输出。
<?xml version='1.0' encoding='UTF-8'?>
<Orders>
<doesItContains>
<contains3>false</contains3>
</doesItContains>
<doesItContains>
<contains3>true</contains3>
</doesItContains>
<doesItContains>
<contains3>false</contains3>
</doesItContains>
<doesItContains>
<contains3>false</contains3>
</doesItContains>
<doesItContains>
<contains3>false</contains3>
<contains3>false</contains3>
</doesItContains>
<doesItContains>
<contains3>false</contains3>
<contains3>true</contains3>
</doesItContains>
<doesItContains>
<contains3>false</contains3>
</doesItContains>
</Orders>
我不知道为什么第一个代码不起作用。有人可以解释为什么第一部分代码不起作用
解决方案
这是因为您的输入有效负载具有<order>null</order>
. 它没有<items>
标签。您只需显示以下内容即可看到这一点$.*items
:
%dw 1.0
%output application/xml
---
{
Orders : payload.root.*order mapObject (
test: $.*items
)}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<Orders>
<test>
<items>155</items>
</test>
<test>
<items>30</items>
</test>
<test>
<items>15</items>
</test>
<test>
<items>5</items>
</test>
<test>
<items>4</items>
<items>7</items>
</test>
<test>
<items>1</items>
<items>3</items>
</test>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</Orders>
推荐阅读
- c++ - 在 Visual Studio 中使用 C++17 静态内联成员时的奇怪行为
- python - 熊猫自动重命名相同的标题
- python - Python多处理创建等待函数输入的后台线程
- wso2 - WSO2 API 管理器中的 WSS 支持
- ios - 从 podspec 或 info.plist 中检索 pod 版本到代码中
- python - 带有 Pyodbc 的 Azure Python WebApp“服务不可用”
- cron - cron 作业执行时网站变慢
- ios - `position:fixed` 叠加在后面
在移动 safari 上`platform=ios` - chronicle - 我想实现事务匹配。我可以在其中使用纪事吗?
- c# - 我正在尝试创建 GOSTR3410 公钥。CKR_ATTRIBUTE_TYPE_INVALID 异常