Настройки импорта из XML - в данном справочнике создаются настройки для импорта из XML файлов. В настройке на основе созданной ранее схемы данных для каждого типа данных указывается источник в XML-файле. Созданные настройки указываются при запуске обработки импорта данных.
Для настройки импорта нужны достаточные знания языка запросов Xpath и структуры XML. Перед настройкой рекомендуется обратиться к соответствующему справочнику. Информацию по данным вопросам можно, например, взять из http://www.w3schools.com/xpath/xpath_intro.asp .
Описание объекта
Открыть окно Настройки импорта из XML можно из одноименного справочника Настройки импорта из XML через Меню: Моделирование >> Финансы >> Импорт >> Настройки импорта из XML.
Форма Настройки импорта из XML
• | Код - указывается код настройки импорта из XML. |
• | Наименование - указывается название настройки импорта из XML. |
• | Схема данных - указывается схема данных, по которой будут производиться настройки. |
o | Путь к данным - с помощью языка Xpath задают, какие атрибуты каких элементов XML файла использовать для заполнения полей схемы данных. |
• | XPath - для каждого поля схемы данных с помощью выражений Xpath указывается, откуда из XML файла брать данные для его заполнения. При этом необходимо указывать "подчиненность" элементов один другому (подобную той, что представлена на рисунке Схема "подчиненности", который расположен в разделе Организация данных в XML-файле и настройка импорта из него этой статьи). Подчиненность задается при помощи стрелок. Кстати, если у элемента есть атрибуты, то считается, что они ему подчинены. Фактически, в настройках указывается путь к данным. |
• | Поле - при выборе схемы данных отображаются ее поля. |
• | Метод поиска - для полей схемы данных с типами данных, ссылающимися на справочники или классификаторы, можно выбрать метод поиска по коду или по наименованию. То есть здесь задается метод поиска элементов с XML-файла в справочниках или классификаторах программы (указанных для полей схемы данных). К примеру, в XML-файле реализуемый товар может быть записан именами или кодами товара. |
• | Создавать новые элементы - можно настроить добавление элементов в справочники или классификаторы, в случае если таковых там нет (возможно только для строк, содержащих поля схемы данных с типам данных Справочник или Классификатор). Например, мы задали в схеме данных поле с типом, ссылающимся на справочник Материалы, который содержит следующие элементы: алюминий, медь, бронза. Элементы <материал> документа XML, настроенные для этого поля, содержат алюминий и олово. Тогда в проводках по элементу алюминий отобразится его название, а по элементу олово отобразится пустое значение (потому как такой элемент не будет найден в системе). Если же для рассматриваемого поля схемы данных установлен признак Обязательный для заполнения, то проводки по элементу олово вообще не сформируются. При установлении флажка Создавать новые элементы олово добавится в справочник Материалы при импорте. Следовательно, проводки по нему сформируются и в них отобразится название такого элемента. Однако для элементов, созданных подобным образом, заполняется лишь параметр Название, а остальные параметры нужно заполнять вручную. |
• | N - указывается порядковый номер элемента. |
Организация данных в XML-файле и настройка импорта из него
В XML информация сохраняется как значения атрибутов элементов, "подчиненных" один другому определенным образом. Далее подробнее рассмотрим структуру XML файла и настройки импорта для него.
Например, имеется информация о продажах, представленная в виде электронной таблицы:
Информация в формате Excel
Допустим, что эти данные в XML организованы следующим образом:
Организация данных в XML
Документ XML должен соответствовать следующим условиям:
• | В документе должен содержаться хотя бы один элемент. |
• | В объекте имеется в точности один элемент, называемый корневым, или элементом документа, ни одна из частей которого не попадает в содержимое какого-либо еще элемента. Для всех остальных элементов действует правило, что если начальный тэг находится в содержимом некого элемента, то и конечный тэг должен находиться среди содержимого того же элемента. Проще говоря, элементы, маркируемые начальными и конечными тэгами, должны быть вложены друг в друга правильным образом. |
Из вышесказанного следует, что в документе для любого некорневого элемента C имеется другой элемент P из этого же документа, такой что C находится в содержимом P, но при этом не попадает в содержимое какого-либо третьего элемента, также находящегося в содержимом элемента P. В таком случае об элементе P говорят как о родителе элемента C, а элемент C называют непосредственным потомком элемента P.
Для нашего примера корневым будет элемент Сценарий. Его потомками будут элементы Дата, различающиеся значениями атрибутов (которые будут "содержать" разные даты). Каждый элемент Дата будет родителем элемента ЦФО. Потомком для каждого элемента ЦФО будет элемент Покупатель, содержащий "свои" атрибуты (значения КиевБуд, МетроСтрой или АероБуд). И так далее, вплоть до элемента Данные. Общая схема "подчиненности" указана ниже:
Схема "подчиненности"
Создадим схему данных для нашего примера:
Схема данных для нашего примера
Эта схема данных подходит и для импорта из файла формата Excel с этой же информацией (смотрите первый рисунок этого раздела статьи).
Далее нужно задать настройки импорта из XML.
В настройках импорта из XML с помощью языка Xpath указывают, какие атрибуты каких элементов использовать для заполнения полей схемы данных. При этом, при помощи стрелок необходимо указывать "подчиненность", подобную той, что представлена на рисунке Схема "подчиненности".
Примечание: считается, что, если у элемента есть атрибуты, то они ему подчинены.
Основные выражения Xpath приведены ниже:
Выражение |
Описание |
Название элемента |
Выбирает все элементы, подчиненные данному. |
/ |
Выбирает из корневого элемента (Примечание: если путь начинается со слэша ( / ), он всегда означает абсолютный путь к элементу). |
// |
Выбирает указанные элементы, где бы они не находились в документе |
. |
Выбирает текущий элемент. |
.. |
Выбирает родителя текущего элемента. |
@ |
Выбирает атрибуты элемента. |
Например, если у нас есть файл:
Организация данных в XML
то следующие выражения будут иметь такие результаты:
Выражение |
Результат |
bookstore |
Выбирает все элементы, подчиненные элементу bookstore. |
bookstore/book |
Выбирает все элементы book, которые подчинены bookstore. |
//book |
Выбирает все элементы book, где бы они не находились в документе. |
bookstore//book |
Выбирает все элементы book, которые являются потомками bookstore, независимо от того, как они расположены под элементом bookstore. |
//@lang |
Выбирает в документе все атрибуты с именем lang. |
Создадим настройки импорта в окне Настройки импорта из XML. Конкретно для нашего примера их можно задать следующим образом:
Настройки импорта для нашего примера
Либо:
Настройки импорта для нашего примера
Фактически, в колонке XPath описана наша схема подчиненности.
Данные в поле схемы данных Сценарий будут браться из атрибута id элемента Сценарий. Поле Дата будет заполняться значениями атрибутов id элементов Дата и так далее.
Структура XML файла может быть и другой, например:
Организация данных в XML
Тогда настройки можно задать так:
Настройки импорта для второго примера
Либо:
Настройки импорта для второго примера
Элемент Сценарий является корневым, поэтому для него можно использовать слеш ( / ), указывая его фактический адрес, а можно просто указать его название. Если бы он не был корневым и входил в другой элемент, например:
Организация данных в XML
то нужно было бы указывать путь так: //Сценарий", либо: "aa/Сценарий.
То есть, перед началом настройки импорта нужно проанализировать структуру документа XML, так как способ указания пути Xpath зависит от каждого конкретного случая.
См. также: