Какое мое выражение Xpath приводит к «$content-type»: «application / xml; charset= utf-8» «$ content»: «PGNvbXBhc3NpZD4xMjI1NDI8L2NvbXBhc3NpZD4 =»

#xml #xpath #power-automate

#xml #xpath #power-автоматизировать

Вопрос:

Я использую MS Flow и получаю HTTP-запрос, предоставляющий мне следующий XML-контент из запроса:

 <?xml version="1.0" ?>
<qdbapi>
    <action>API_DoQuery</action>
    <errcode>0</errcode>
    <errtext>No error</errtext>
<dbinfo>
<name>Won Opportunities</name>
<desc></desc>
</dbinfo>
<variables>
</variables>
<chdbids>
</chdbids>
  <record>
<compassid>122542</compassid>
    <update_id>1597844618723</update_id>
  </record>
  <record>
<compassid>222222</compassid>
    <update_id>1597844607031</update_id>
  </record>
  <record>
<compassid>981344</compassid>
    <update_id>1597840564426</update_id>
  </record>
</qdbapi>
  

Мне нужно выражение xpath, которое создает массив из значений в тегах. Итак, 981344, 222222, 122542.

Текущее выражение xpath равно

  xpath(xml(body('CompassIDs')),'/qdbapi/record/compassid')
  

Я получаю результат:

 [
  {
    "$content-type": "application/xml;charset=utf-8",
    "$content": "PGNvbXBhc3NpZD4xMjI1NDI8L2NvbXBhc3NpZD4="
  },
  {
    "$content-type": "application/xml;charset=utf-8",
    "$content": "PGNvbXBhc3NpZD4yMjIyMjI8L2NvbXBhc3NpZD4="
  },
  {
    "$content-type": "application/xml;charset=utf-8",
    "$content": "PGNvbXBhc3NpZD45ODEzNDQ8L2NvbXBhc3NpZD4="
  }
]
  

Пожалуйста, помогите! Спасибо

Ответ №1:

Ваша проблема в том, что ваш xpath возвращает объекты узла вместо их значений. В результате вы получаете объект в кодировке base64. Так, например, PGNvbXBhc3NpZD4xMjI1NDI8L2NvbXBhc3NpZD4= эквивалентно <compassid>122542</compassid> при декодировании

Вам нужно изменить свой xpath с /qdbapi/record/compassid на /qdbapi/record/compassid/text() , что даст вам значение элемента text, т. Е.. 122542 в данном случае