Разбор xml по xq и jq

Существует некоторая команда терминала для синтаксического анализа xml в csv в синтаксисе python xq (также требуется установленный python-yq):

xq -r '[.yml_catalog.shop.offers.offer[] | [."@id", ."@available", .price, .name, .description]] | . |= [["id", "available", "price", "name", "description"]] + . | .[] | @csv' source.yml > result.csv

Вот пример файла xml:

<?xml version="1.0" encoding="UTF-8"?>
  <yml_catalog date="2020-07-29 09:39">
    <shop>
      <offers>
        <offer id="17489" available="true">
          <price>1500</price>
          <name>Item 1</name>
          <description>Item 1 description</description>
          <param name="category type">sale</param>
          <param name="size">big</param>
        </offer>
        <offer id="17490" available="false">
          <price>1100</price>
          <name>Item 2</name>
          <description>Item 2 description</description>
          <param name="category type">main</param>
          <param name="size">small</param>
        </offer>
        ...
      </offers>
    </shop>
  </yml_catalog>

Мне нужно добавить теги параметров для разбора. Я пытался справиться с Побочным ."Парами [@ имя =" категория типа "]", ."[@ Параметры именем = категория типа] (то же самые для пар тега с атрибутом размера), но он не работает.

Необходимый выходной csv:

"id","available","price","name","description","category","size"
"17489","true","1500","Item 1","Item 1 description","sale","big"
"17490","false","1100","Item 2","Item 2 description","main","small"

Пожалуйста, дайте мне совет, как обрабатывать теги с точными свойствами со значениями и получать их текстовое текстовое содержимое?

Спасибо!

1 ответ

Похоже, вы пытаетесь преобразовать вывод XML в CSV, посколькуxqтакже использует jqсинтаксис ниже, вы можете использовать следующий

      xq -r '["id","available","price","name","description","category","size"], 
       (.yml_catalog.shop.offers.offer[] | 
       [."@id", ."@available", .price, .name, .description, .param[]."#text"]) | 
       @csv' xml
Другие вопросы по тегам