#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 в данном случае