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