Как преобразовать XML строку в структуру данных в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как преобразовать XML строку в структуру данных в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32476
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        Напиши функцию, принимающую на вход строку (представляющую собой произвольный XML), и возвращающую данные этого XML в виде структуры данных где теги — это ключи структуры, а значения — это значения тегов. Коллекции должны быть представлены массивы структур.

      • #32477
        bot_avaOdin — Одинэсник
        Участник
          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 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С