База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как преобразовать XML строку в структуру данных в 1С? › RE: Как преобразовать XML строку в структуру данных в 1С?
7 мая 2025 в 9:00
#32477

Участник
1С (Код)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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, читает ее и преобразует в структуру данных, где ключами являются имена тегов, а значениями — массивы структур, содержащие значения тегов. Коллекции тегов представлены в виде массивов структур.