Показать / скрыть оглавление

    Обработка XML и загрузка данных из него

    Задача

    Обработать имеющийся файл формата XML, разобрать данные по структуре для дальнейшего использования (например, вставки и обновления строк Колибри).

    Исходные данные

    Перед тем как приступить к решению задачи, ознакомимся с имеющимся файлом bookstore.xml. На его основе необходимо составить хранилище книжного магазина.

    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
        <book title="Everyday Italian">
          <author>Giada De Laurentiis</author>
          <year>2005</year>
          <price>30.00</price>
        </book>
        <book title="Harry Potter">
          <author>J K. Rowling</author>
          <year>2005</year>
          <price>29.99</price>
        </book>
        <book title="XQuery Kick Start">
          <author>James McGovern</author>
          <author>Per Bothner</author>
          <author>Kurt Cagle</author>
          <author>James Linn</author>
          <author>Vaidyanathan Nagarajan</author>
          <year>2003</year>
          <price>49.99</price>
        </book>
        <book title="Learning XML">
          <author>Erik T. Ray</author>
          <year>2003</year>
          <price>39.95</price>
        </book>
    </bookstore>
    

    Сценарий решения задачи

    Решение задачи будет заключаться в создании процесса, который будет включать следующие шаги:

    1. Получение XML файла.
    2. Преобразование файла в XML.
    3. Получение данных о книгах с помощью узла "Таблица XPath".
    4. Получение данных об авторах книг с помощью узла "Таблица XPath".
    5. Присоединение к данным о книгах данных об их авторах.

    Используемые узлы

    Прочитать файл
    Преобразовать из XML
    Таблица XPath
    Присоединение

    Построение и настройка процесса

    1. Создадим и сохраним новый процесс.
    2. Для обработки файла процессом добавим узел Прочитать файл.
      Укажем название узла "Файл bookstore.xml" и настроим свойства, указав сетевой путь до файла XML.
    3. Для преобразования выходных данных узла "Файл bookstore.xml"* из потока байт в формат XML добавим узел Преобразовать из XML и соединим его входной порт с выходным портом узла "Файл bookstore.xml".
    4. Заполним свойства узла Преобразовать из XML, установив свойство "Добавить идентификатор элемента", чтобы далее иметь возможность установить связи между родительским и дочерними элементами.
    5. Для обработки полученного XML-документа добавим в процесс узел Таблица XPath и соединим его входной порт с выходным портом узла Преобразовать из XML". .
    6. У узла Таблица XPath укажем название "Информация о книгах" и заполним свойства для получения данных.
      Укажем //book как корневой элемент для того, чтобы получить в качестве строк выходной таблицы все элементы book.
      Файл содержит информацию одного книжного магазина, поэтому определение родительского элемента для элементов book не требуется, свойство "Добавить идентификатор родительского элемента" не устанавливаем.

      Для получения данных о книгах добавим колонки и укажем соответствующий XPath.

      Колонка XPath Примечание
      Наименование /book/@title Получим атрибут title элемента book
      Год /book/year Получим элемент year потомок элемента book
      Цена /book/price Получим элемент price потомок элемента book
      Автор /book/author Получим один из множества элементов author потомка элемента book.
      Получение полного перечня авторов будет выполнено отдельным узлов
    7. Выполним проверку процесса, при наличии ошибок исправим их.

    8. Запустим процесс в отладке для просмотра результатов узла "Информация о книгах".
      Обрабатываемый XML-документ содержал 4 элемента book, которые преобразованы в строки выходной таблицы.
      Колонка id добавлена в выходную таблицу, так как в узле Преобразовать из XML было установлено свойство "Добавить идентификатор элемента".
    9. Для получения полного перечня авторов добавим в процесс ещё один узел Таблица XPath и соединим его входной порт с выходным портом узла "Преобразовать из XML".
    10. У узла Таблица XPath укажем название "Информация об авторах" и заполним свойства для получения данных.
      Укажем //book/author как корневой элемент для того, чтобы получить в качестве строк выходной таблицы все элементы author родительских элементов book.
      Установим ✓ в свойстве "Добавить идентификатор родительского элемента", для добавления элементам author идентификатора родительского элемента book_id, это позволит позже присоединить элементы author к элементам book.
      Для получения значений элементов author добавим соответствующую колонку.
    11. Запустим процесс в отладке для просмотра результатов узла "Информация о авторах".
      Обрабатываемый XML-документ содержал 8 элементов author, которые преобразованы в строки выходной таблицы.
      Колонка book_id добавлена в выходную таблицу, и позволит присоединить данные к выходным данным узла "Информация о книгах".
    12. Для присоединения к данным о книгах данных об их авторах добавим в процесс узел Присоединение и соединим его с выходными портами узлов "Информация о книгах" и "Информация об авторах".
    13. У узла Присоединение укажем название "Присоединение к книгам авторов", заполним свойства и отредактируем правило присоединения.
    14. Запустим процесс в отладке для просмотра результатов узла "Присоединение к книгам авторов".
    15. Далее таблица с данными, полученная из узла "Присоединение к книгам авторов", может быть обработана с помощью других узлов, а данные записаны в хранилище.
    Замечание

    Файл процесса "Обработка XML"

    В начало страницы Справочная система Колибри. Группа компаний Октоника, 2022