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

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

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

Вид формы

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

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

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

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

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

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

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

9 Comments

  1. egorovntn

    Жалко что листинг не выложили, а то не все можно скачать…

    Reply
  2. vano-ekt

    а атрибуты как в соответствие записываются? тут только содержимое нодов на приведенном скрине

    Reply
  3. vano-ekt

    +(2) ЗагрузитьСтрокуXMLВДеревоЗначений() из типовых на первый взгляд кошернее

    Reply
  4. mcd2003

    Gjrf(2) vano-ekt, Пока никак. Будет задача — будет модификация.

    Reply
  5. Yashazz

    …а ещё можно выложить чтение xml как таковое, обалдеть какое сложное действие.

    Докатились. Считывание xml в соответствия, структуры и иные коллекции уже заслуживает отдельной публикации.

    Автор, вы, надеюсь, хотя бы используете некое красивое преобразование, или тупо циклом?

    Reply
  6. oleg_km

    А чем XDTO не угодил? Вроде все тоже делает, только встроенными средствами. С лета интенсивно пользую для разбора xml-файлов. Даже просто если нужно использовать большую структуру, то чтобы не захламлять код многочисленными .Вставить() сделал справочник ШаблоныXML и описываю такие структуры в XML.

    Reply
  7. mcd2003

    (6) oleg_km, в данном случае мешает отсутствие xsd. Даже просто какого-то описания формата входящего файла нет. Поэтому, вместо описания правил преобразования, и дальнейшего использования полученной структуры — просто разбирается произвольный файл в произвольну структуру.

    Конечно, если формат входного файла известен, то XDTO будет в разы быстрее его разбирать.

    Reply
  8. Владимир Шинкевич

    (7) mcd2003, xsd можно получить из xml, например через онлайн конверторы. Этот xsd нужно подредактировать (добавить targetNamespace=»http://www.nazvanie» после elementFormDefault=»qualified») и 1с сделает из него пакет XDTO

    Reply
  9. a.terentev

    (6) oleg_km, согласен с mcd2003, нормальной работе мешает отсутствие схемы.

    Например, делаю обмен с бюро кредитных историй: у одного бюро xml запроса строится по двум схемам — делаю без особых проблем (хотя и они были) через xdto. Но при выгрузке итогового xml надо убирать все неймспейсы и оставить только названия тегов — требование бюро. Приходится убирать их вручную через СтрЗаменить. В ответ приходит xml также слепленая из двух схем, но тоже без неймспейсов — в итоге с помощью xdto ее уже не распарсить — тут и пригодится такая обработка.

    Во втором бюро вообще нет схемы xml, а все теги называются <s>, <c>, <a> и <n> — тут тоже пришлось писать свой парсер в структуру.

    Так что все зависит от ситуации, и данное решение тоже имеет место…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *