Способ определения XPath для извлечения данных определенного атрибута - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю над интеграцией и получаю ответ в формате XML. Мне нужно проанализировать его и получить значения атрибутов с помощью JavaScript. Я пытаюсь получить значение из узла <ab:specific_field> с <ab:field_reference> идентификатором товара или косметики. Я изо всех сил пытаюсь пройти через узлы и извлечь <ab:Value> значение узла, которое является значением, которое мне нужно извлечь.

Я пробовал с //ab:Main_Data/ab:specific_field[1]/ab:Value, но безуспешно. Может ли кто-нибудь помочь мне написать правильный XPath для извлечения значения из <ab:value> узла.

<ab:Response_Data>
<ab:MainData>
  <ab:reference>....</ab:refernce>
  <ab:information....<ab..info>
   <ab:specific_field>
     <ab:Field_Reference>
     <ab:ID type="WID">123</ab:ID>
     <ab:ID wd:parent_id="custom-API-Service" ab:parent_type="Integration_Document_Name" ab:type="Integration_Document_Field_Name">Commodity</ab:ID>
     </ab:Field_Reference>
     <ab:Value>Medicine</ab:Value>
   </ab:specific_field>
   <ab:specific_field>
<ab:Field_Reference>
     <ab:type="WID">1234</ab:ID>
     <ab:ID wd:parent_id="custom-API-Service" ab:parent_type="Integration_Document_Name" ab:type="Integration_Document_Field_Name">Cosmetic</ab:ID>
     </ab:Field_Reference>
     <ab:Value>Powder</ab:Value>
   </ab:specific_field>
</ab:MainData>
</ab:Response_Data>

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

В вашем XML есть ошибки. Если у вас есть более одного поля ab: ID, вы можете отфильтровать одно из них с помощью свойства.

Чтобы получить узлы ab: ID:

//ab:ID[@wd:parent_id="custom-API-Service"]

Чтобы получить узлы ab: ID текста:

//ab:ID[@wd:parent_id="custom-API-Service"]/text()
0 голосов
/ 07 ноября 2019

Попробуйте это

//ab:maindata/ab:specific_field[.//ab:id[normalize-space()='commodity' or normalize-space()='cosmetic']]/ab:value
...