Задача и предварительные условия

Выберите повторяющиеся элементы XML, используйте атрибут id как код и запишите каталог в Excel.

В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.

Учебные входные данные

<catalog><item id="T01"><name>Tea</name><unit>pack</unit></item><item id="C01"><name>Coffee</name><unit>bag</unit></item></catalog>

Блоки, связи и точные настройки

Поясняющая схемаУвеличить ↗04. XML: каталог товаров в Excel. Схема примера 04: 3 блока, 2 связи. Идентификаторы узлов и порты настроенной схемы сохранены.
Схема потока 04

Схема примера 04: блоков — 3, связей — 2. Идентификаторы узлов и порты настроенной схемы сохранены.

Добавьте перечисленные блоки в конструкторе, откройте свойства каждого и задайте эти значения. Имена demo_* обозначают учебные источники и подключения.

БлокНастройка
1
Файл
src
  • Роль: source
  • Источник: demo_catalog_xml
  • Настройки чтения:
    • Путь записей XML: ./item
    • Диапазон: A1:C3
    • Первая строка — заголовок: так
2
Сопоставление столбцов
map
  • Режим: columns
  • Столбцы:
      • Имя: ProductCode
      • Значение: @id
      • Имя: ProductName
      • Значение: name
      • Имя: Unit
      • Значение: unit
3
Экспорт данных
out
  • Формат: xlsx
  • Имя файла: catalog
  • Назначение: download
  • Разделитель: ;
  • Часовой пояс: Europe/Kyiv

Связи портов

  • src out → map in
  • map out → out in
Полная конфигурация схемы в JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_catalog_xml",
        "options": {
          "xml_path": "./item",
          "range": "A1:C3",
          "header": true
        }
      }
    },
    {
      "id": "map",
      "type": "mapping",
      "label": "map",
      "config": {
        "mode": "columns",
        "columns": [
          {
            "name": "ProductCode",
            "value": "@id"
          },
          {
            "name": "ProductName",
            "value": "name"
          },
          {
            "name": "Unit",
            "value": "unit"
          }
        ]
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "xlsx",
        "filename": "catalog",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "map",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "map",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

Ожидаемый результат

ProductCodeProductNameUnit
T01Teapack
C01Coffeebag

Запуск и проверка

  1. Загрузите XML как catalog.xml. Выберите путь ./item от корня catalog.
  2. Проверьте доступные поля источника: @id, name и unit.
  3. Запустите поток; catalog.xlsx должен содержать 2 товара и 3 столбца.

Частые ошибки

  • Атрибут id доступен как @id, а не id.
  • Путь ./catalog/item избыточен, если catalog уже является корнем документа.
  • Повторяющиеся вложенные теги могут давать сложные значения; в примере намеренно используются простые элементы.