В 1С можно распарсить XML файл с помощью COM объекта "Msxml2.DOMDocument". В зависимости от установленного программного обеспечения, доступны различные версии "Дом документа". Подробно, свойства и методы различных версий DOMDocument описаны в MSDN.
Версии DomDocument Msxml2.DOMDocument.3.0 Msxml2.DOMDocument.4.0 Msxml2.DOMDocument.5.0 Msxml2.DOMDocument.6.0
Для того чтобы создать или парсить xml, существуют примеры написанные с использованием встроенных объектов (ЗаписьXML, ЧтениеXML) языка программирования 1С. При сложной структуре xml, объём программного кода в таких примерах может быть очень большим. При использовании "Msxml2.DOMDocument" программный код можно сделать более компактным и получить более гибкий механизм обращения к узлам XML документа.
Технология DOMDocument предоставляет удобные методы для работы с данными в виде XML. В данном объекте, структура данных представлена в виде дерева узлов. Все узлы, являются подчиненными к корневому. Благодаря DOMDocument можно перебирать, создавать, удалять, копировать узлы и выполнять многие другие действия.
Создать, записать XML файл
Функция СоздатьXML() Попытка DomDocument = Новый COMОбъект("MSXML2.DOMDocument.6.0"); Исключение Сообщить("Ошибка: объект MSXML2.DOMDocument не создан"); Возврат Ложь; КонецПопытки; //Записать объявление XML XML = DomDocument.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8"""); DomDocument.insertBefore(XML,); //Создать корневой узел ElementRootTag = DomDocument.createElement("RootTag"); //Создать подчиненный узел ElementTag = DomDocument.createElement("Tag"); ElementTag.setAttribute("ИмяАтрибута","ЗначениеАтрибута"); ElementText = DomDocument.createTextNode("Текст"); ElementTag.appendChild(ElementText); CDATA = DomDocument.createCDATASection("Значение"); ElementTag.appendChild(CDATA); //Записать узлы ElementRootTag.appendChild(ElementTag); DomDocument.appendChild(ElementRootTag); //Записать файл DomDocument.Save("C:\Test.xml"); //Сформированный XML текст XMLТекст = DomDocument.xml; КонецФункции
Прочитать XML файл
Функция СчитатьXML() Попытка DomDocument = Новый COMОбъект("MSXML2.DOMDocument.6.0"); Исключение Сообщить("Ошибка: объект MSXML2.DOMDocument не создан"); Возврат Ложь; КонецПопытки; //Загрузить XML из строки DomDocument.loadXML("<?xml version=""1.0"" encoding=""UTF-8""?> |<RootTag> |<Tag Имя=""Значение"">Текст[CDATA[Значение]]</Tag> |</RootTag>"); //Загрузить файл XML DomDocument.load("C:\Test.xml"); Если DomDocument.parseError.errorCode <> 0 Тогда Сообщить("Ошибка: XML файл не валидный"); Возврат Ложь; КонецЕсли; //Выбрать узлы Nodes = DomDocument.SelectNodes("Tag"); Для Индекс = 0 По Nodes.Length - 1 Цикл ЗначениеАтрибута = Nodes.Item(Индекс).getAttribute("ИмяАтрибута"); Tag = Nodes.Item(Индекс); КонецЦикла; КонецФункции
Похожие статьи: ЗаписьXML, ЧтениеXML в 1С:Предприятии Запись, чтение XML из ДокументDOM
|