gifts2017

Разбор XML в соответствие или структуру (8.3)

Опубликовал Денис Конашёнок (mcd2003) в раздел Программирование - Инструментарий

XML файлы не всегда гигантские монстры. Иногда это достаточно скромные файлики, которые хочется видеть в виде встроенных в 1С представлений данных. Эта библиотечка позволит загружать небольшие XML файлы в виде структур и соответствий.

После открытия формы, выбираем xml файл и начинаем на него смотреть, с разных сторон.

Вид формы

Мой файл выглядит примерно так:

XML в редакторе FAR2

Нагляднее всего будет выглядеть структура:

Структура в отладчике

Но структура имеет массу неприятных ограничений на имена свойств. А вот XML этих неприятностей лищён. Для большей совместимости с исходным форматом данных можно испольщовать соответствие:

Соответствие в отладчике

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

Скачать файлы

Наименование Файл Версия Размер
Обработка демонстрирующая использование разбора XML в структуру/соостветствие 44
.epf 7,63Kb
10.10.14
44
.epf 1.0 7,63Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Антон Егоров (egorovntn) 12.10.14 18:28
Жалко что листинг не выложили, а то не все можно скачать...
2. Ivan Khorkov (vano-ekt) 13.10.14 15:17
а атрибуты как в соответствие записываются? тут только содержимое нодов на приведенном скрине
3. Ivan Khorkov (vano-ekt) 13.10.14 15:22
+(2) ЗагрузитьСтрокуXMLВДеревоЗначений() из типовых на первый взгляд кошернее
vit2013; mcd2003; +2 Ответить
4. Денис Конашёнок (mcd2003) 13.10.14 16:09
Gjrf(2) vano-ekt, Пока никак. Будет задача - будет модификация.
5. Яков Коган (Yashazz) 13.10.14 19:08
...а ещё можно выложить чтение xml как таковое, обалдеть какое сложное действие.
Докатились. Считывание xml в соответствия, структуры и иные коллекции уже заслуживает отдельной публикации.

Автор, вы, надеюсь, хотя бы используете некое красивое преобразование, или тупо циклом?
6. Олег (oleg_km) 15.10.14 09:44
А чем XDTO не угодил? Вроде все тоже делает, только встроенными средствами. С лета интенсивно пользую для разбора xml-файлов. Даже просто если нужно использовать большую структуру, то чтобы не захламлять код многочисленными .Вставить() сделал справочник ШаблоныXML и описываю такие структуры в XML.
7. Денис Конашёнок (mcd2003) 26.10.14 17:16
(6) oleg_km, в данном случае мешает отсутствие xsd. Даже просто какого-то описания формата входящего файла нет. Поэтому, вместо описания правил преобразования, и дальнейшего использования полученной структуры - просто разбирается произвольный файл в произвольну структуру.
Конечно, если формат входного файла известен, то XDTO будет в разы быстрее его разбирать.
8. Владимир Шинкевич (Владимир Шинкевич) 04.02.15 16:22
(7) mcd2003, xsd можно получить из xml, например через онлайн конверторы. Этот xsd нужно подредактировать (добавить targetNamespace="http://www.nazvanie" после elementFormDefault="qualified") и 1с сделает из него пакет XDTO
9. Александр Терентьев (a.terentev) 14.06.16 11:50
(6) oleg_km, согласен с mcd2003, нормальной работе мешает отсутствие схемы.
Например, делаю обмен с бюро кредитных историй: у одного бюро xml запроса строится по двум схемам - делаю без особых проблем (хотя и они были) через xdto. Но при выгрузке итогового xml надо убирать все неймспейсы и оставить только названия тегов - требование бюро. Приходится убирать их вручную через СтрЗаменить. В ответ приходит xml также слепленая из двух схем, но тоже без неймспейсов - в итоге с помощью xdto ее уже не распарсить - тут и пригодится такая обработка.
Во втором бюро вообще нет схемы xml, а все теги называются <s>, <c>, <a> и <n> - тут тоже пришлось писать свой парсер в структуру.
Так что все зависит от ситуации, и данное решение тоже имеет место...