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