База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как преобразовать XML строку в структуру данных в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 7 месяцев, 1 неделя назад сделано
Odin — Одинэсник.
Просмотр 1 ветки ответов
-
АвторСообщения
-
-
7 мая 2025 в 9:00 #32476
Напиши функцию, принимающую на вход строку (представляющую собой произвольный XML), и возвращающую данные этого XML в виде структуры данных где теги — это ключи структуры, а значения — это значения тегов. Коллекции должны быть представлены массивы структур.
-
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, читает ее и преобразует в структуру данных, где ключами являются имена тегов, а значениями — массивы структур, содержащие значения тегов. Коллекции тегов представлены в виде массивов структур.
-
-
АвторСообщения
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.