У меня есть входной 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>
Я не могу понять, почему первый код не работал. может кто-нибудь объяснить, почему код первой части не работал