HelpF.pro

Парсер XML в дерево значений

Код 1C v 8.2 УП
 
// Чтение XML

&НаСервере
Функция ЧтениеXMLВДерево(Путь)

Дерево = Новый ДеревоЗначений;
Дерево.Колонки.Добавить("Имя");
Дерево.Колонки.Добавить("Значение");

XMLФайл = Новый ЧтениеXML;
XMLФайл.ОткрытьФайл(Путь);

ПрочитатьXMLПоТегам(XMLФайл, Дерево.Строки);

XMLФайл.Закрыть();

Возврат Дерево;

КонецФункции

&НаСервереБезКонтекста
Процедура ПрочитатьXMLПоТегам(XMLФайл, ТекущийНаборСтрок)

Пока XMLФайл.Прочитать() Цикл
Если XMLФайл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

НоваяСтрока = ТекущийНаборСтрок.Добавить();
НоваяСтрока.Имя = XMLФайл.Имя;
НоваяСтрока.Значение = "";

Пока XMLФайл.ПрочитатьАтрибут() Цикл

НоваяСтрокаАтрибут = НоваяСтрока.Строки.Добавить();
НоваяСтрокаАтрибут.Имя = XMLФайл.Имя;
НоваяСтрокаАтрибут.Значение = СокрЛП(XMLФайл.Значение);

КонецЦикла;

ПрочитатьXMLПоТегам(XMLФайл, НоваяСтрока.Строки);

ИначеЕсли XMLФайл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Возврат;
ИначеЕсли XMLФайл.ТипУзла = ТипУзлаXML.Текст Тогда

ТекущийНаборСтрок.Родитель.Значение = СокрЛП(XMLФайл.Значение);

Иначе
Сообщить("Тип узла: " + XMLФайл.ТипУзла + " НЕ ОБРАБОТАН", СтатусСообщения.Важное);
Конецесли;
КонецЦикла;

КонецПроцедуры


Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1321.html