Бизнес [Инфостарт] Разбор XML документа - почти все возможные способы (2025)

Бывалый
29 Мар 2020
287,023
1,311,487
113
Голосов: 0
#1
[Инфостарт] Разбор XML документа - почти все возможные способы (2025)


Описание [Инфостарт] Разбор XML документа - почти все возможные способы (2025):



К вам поступил XML-документ. Как извлечь из него данные для обработки в 1С?

Рассмотрим различные подходы к обработке XML-документов.

1. Чтение XML-документа как есть.

Отслеживание текущей позиции в XML-документе осуществляется с помощью переменной ТекущийПуть. На основе этой переменной заполняются (или игнорируются) соответствующие данные в 1С.

2. Получение DOM-документа из XML-файла и последовательный перебор всех узлов полученного документа.

Этот метод немного проще прямого чтения XML (57 строк кода против 62), но его быстродействие интересно: для файла в 10 тысяч записей обработка заняла 12 секунд (быстрее более чем в два раза), но для файла со 100 тысячами записей резко поднялась до 1000 секунд (медленнее более чем в три раза).

3. Подобный второму метод, но вместо последовательного перебора узлов применяется отбор требуемых узлов в DOM-документе с помощью выражений XPath.

Этот метод немного проще, чем простой перебор узлов в DOM-документе, но его быстродействие…

При 10 000 записей 69 секунд, а для 100 000 обработка длилась более часа, так и не завершилась, после чего была снята принудительно.

Очевидно, метод с использованием DOM, особенно при поиске узлов документа с помощью выражений XPath, следует использовать только для небольших изменений DOM-документа со сложной структурой узлов.

Все последующие методы используют для разбора XML-документа фабрику XDTO.

4. Применение метода ПрочитатьXML глобальной фабрики XDTO.

Тип получаемого объекта не указывается, его определяет сам метод фабрики. Есть нюанс: если тип получаемого объекта XDTO не указан, фабрика не всегда может определить, является ли он одиночным объектом или списком из нескольких одинаковых объектов (в нашем примере, если ПриходныйОрдер в XML-документе будет один, фабрика посчитает, что Приходы XDTO.Приходный Ордер — это одиночный объект, а не список).

Этот метод не только заметно проще, но и показывает отличное быстродействие: 4,6 секунды на 10 000 записей и 46 секунд на 100 000.

5. Аналогично предыдущему методу, но глобальной фабрике XDTO на вход подаётся не только XML-документ, но и его тип.

Тип берётся из ветки конфигурации XDTO-пакеты. Если те, кто передаёт вам XML-данные, хорошие люди, они должны передать вам и XML-схему данных — файл с расширением .xsd, из которого вы создадите в своей конфигурации XDTO-пакет (команда импорт XML-схемы). Если это не так, обычно не сложно создать требуемый пакет вручную, анализируя переданные XML-данные.

Метод замечательный как по простоте создания, так и по быстродействию — 3,1 секунды на 10 000 записей.

6. Модификация предыдущего метода, но без использования объекта конфигурации XDTO-пакет и фабрика XDTO создаётся на лету из текстового описания XML-схемы.

В прилагаемой конфигурации все методы разбора XML представлены в общей команде РазобратьXML, а в другой общей команде СоздатьXML — средства для создания тестовых данных.

Подробнее:
Для просмотра содержимого вам необходимо авторизоваться

Скачать курс [Инфостарт] Разбор XML документа - почти все возможные способы (2025):


Для просмотра содержимого вам необходимо авторизоваться
 
Последнее редактирование модератором: