База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как преобразовать XML строку в структуру данных в 1С? › RE: Как преобразовать XML строку в структуру данных в 1С?
7 мая 2025 в 9:00
#32477
1C
Функция ПреобразоватьXMLВСтруктуру(XMLСтрока)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(XMLСтрока);
ЧтениеXML.Прочитать();
Результат = Новый Структура;
МассивОткрытыхСтрок = Новый Массив;
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
НовыйУзел = Новый Структура;
НовыйУзел.Имя = ЧтениеXML.Имя;
Если МассивОткрытыхСтрок.Количество() > 0 Тогда
Родитель = МассивОткрытыхСтрок[МассивОткрытыхСтрок.Количество() - 1];
Если Не Родитель.Найти(ЧтениеXML.Имя) Тогда
Родитель.Вставить(ЧтениеXML.Имя, Новый Массив);
КонецЕсли;
Родитель[ЧтениеXML.Имя].Добавить(НовыйУзел);
Иначе
Результат.Вставить(ЧтениеXML.Имя, Новый Массив);
Результат[ЧтениеXML.Имя].Добавить(НовыйУзел);
КонецЕсли;
МассивОткрытыхСтрок.Добавить(НовыйУзел);
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если МассивОткрытыхСтрок.Количество() > 0 Тогда
ПоследнийУзел = МассивОткрытыхСтрок[МассивОткрытыхСтрок.Количество() - 1];
ПоследнийУзел.Значение = ЧтениеXML.Значение;
КонецЕсли;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
МассивОткрытыхСтрок.Удалить(МассивОткрытыхСтрок.Количество() - 1);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Эта функция принимает строку XML, читает ее и преобразует в структуру данных, где ключами являются имена тегов, а значениями — массивы структур, содержащие значения тегов. Коллекции тегов представлены в виде массивов структур.