Каратэ: сопоставьте повторяющийся элемент в xml

#karate

#каратэ

Вопрос:

Я пытаюсь сопоставить повторяющийся элемент в xml со схемой karate.

XML-сообщение

 * def xmlResponse =
"""
<Envelope>
   <Header/>
   <Body>
      <Response>
         <Customer>
            <keys>
               <primaryKey>1111111</primaryKey>
            </keys>
            <simplePay>false</simplePay>
         </Customer>
         <serviceGroupList>
            <serviceGroup>
               <name>XXXX</name>
               <count>1</count>
               <parentName>DDDDD</parentName>
               <pendingCount>0</pendingCount>
               <pendingHWSum>0.00</pendingHWSum>
            </serviceGroup>
            <serviceGroup>
               <name>ZZZZZ</name>
               <count>0</count>
               <parentName/>
               <pendingCount>3</pendingCount>
               <pendingHWSum>399.00</pendingHWSum>
            </serviceGroup>
         </serviceGroupList>
      </Response>
   </Body>
</Envelope>
"""
  

Я хочу сопоставить каждый из них со следующей схемой каратэ

  Given def serviceGroupItem =
  """
    <serviceGroup>
               <name>##string</name>
               <count>##string</count>
               <parentName>##string</parentName>
               <pendingCount>##string</pendingCount>
               <pendingHWSum>##string</pendingHWSum>
            </serviceGroup>
  """

  

Вот как я пытался

   * xml serviceGroupListItems = get xmlResponse //serviceGroupList
  * match each serviceGroupListItems == serviceGroupItem
  

Но это не работает. Есть идеи, как я могу заставить это работать

Комментарии:

1. Кроме того, если вам нужна дополнительная информация, вы можете посмотреть здесь : github.com/intuit/karate/issues/653 , но сопоставить xml по-прежнему не так просто.

Ответ №1:

Вы должны сопоставить каждую ServiceGroup.

 * xml serviceGroupListItems = get xmlResponse //serviceGroupList
* match each serviceGroupListItems.serviceGroupList.serviceGroup == serviceGroupItem.serviceGroup