Каталог решений - Алгоритм преобразования XML строки в дерево значений

Алгоритм преобразования XML строки в дерево значений

Алгоритм преобразования XML строки в дерево значений

В наличии

Простой способ преобразования XML строки в дерево значений.
Кода меньше, чем в любом из вариантов, найденных мною в интернете.

Категория:

Описание

Функция формирует из переданной в параметре XML строки дерево значений, которое возвращает в место вызова. Функцию можно расположить в любом модуле 1С.

Пример вызова функции _ДеревоЗначений =  ПолучитьДеревоЗначенийИзXMLСтроки(XMLСтрока);

Функция ПолучитьДеревоЗначенийИзXMLСтроки(XMLСтрока)
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(XMLСтрока);
	ЧтениеXML.Прочитать();
	РезультатДерево = Новый ДеревоЗначений;
	РезультатДерево.Колонки.Добавить("НазваниеУзла");
	РезультатДерево.Колонки.Добавить("ЗначениеУзла");
	МассивОткрытыхСтрок = Новый Массив;
	ПоследняяОткрытаяСтрока = Неопределено;
	Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда
Если МассивОткрытыхСтрок.Количество() Тогда
_Родитель = МассивОткрытыхСтрок[МассивОткрытыхСтрок.Количество()-1]; Иначе
_Родитель = РезультатДерево; КонецЕсли; ПоследняяОткрытаяСтрока = _Родитель.Строки.Добавить(); ПоследняяОткрытаяСтрока.НазваниеУзла = ЧтениеXML.Имя; МассивОткрытыхСтрок.Добавить(ПоследняяОткрытаяСтрока); ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.Текст Тогда
ПоследняяОткрытаяСтрока.ЗначениеУзла = ЧтениеXML.Значение; ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.КонецЭлемента Тогда
Если МассивОткрытыхСтрок.Количество() Тогда
МассивОткрытыхСтрок.Удалить(МассивОткрытыхСтрок.Количество()-1); КонецЕсли; КонецЕсли; КонецЦикла; Возврат РезультатДерево; КонецФункции
has been added to your cart:
Оформление заказа