Fastinfoset 1с что это
Перейти к содержимому

Fastinfoset 1с что это

  • автор:

XML-документы

Работа с XML-документами доступна непосредственно из встроенного языка системы 1С:Предприятие 8.

XML-документы

Имеется возможность:

  • последовательно читать и записывать xml-документы:
    • преобразовывать из строки, полученной из текста элемента или значения атрибута XML, в значение в соответствии с указанным типом;
    • получать строковое представление значения для помещения в текст элемента или значение атрибута XML;
    • получить тип данных XML, соответствующий переданному в качестве параметра типу;
    • производить проверку возможности чтения из XML значения указанного типа;
    • производить проверку соответствия схеме XML при чтении XML
    • производить запись значения в формате XML;
    • возвращать тип, соответствующий типу данных XML.
    • DOM Level 2;
    • XPath (DOM Level 3);
    • DOM Load and Save (DOM Level 3).

    Используя внешнее соединение и механизмы работы с XML можно организовывать интеграцию с прикладными системами по принятым в этих системах форматам. Для этого применяются механизмы XSL-преобразования. Например, для такой интеграции можно использовать BizTalk сервер компании Microsoft:

    XML-документы

    Fast Infoset

    Платформа предоставляет средства для работы с XML-документами в бинарном формате Fast Infoset. Технология Fast Infoset использует альтернативный синтаксис отображения XML-данных. Это обеспечивает меньший объем файлов и более высокую скорость обработки, чем скорость обработки данных, записанных в обычном XML-формате. Файл, записанный в формате Fast Infoset, имеет расширение.fi или.finf.

    Авторы: Е.Ю. Хрусталева

    Fastinfoset 1с что это

    День добрый.
    Как я понимаю — Fast Infoset — это хранение XML данных в бинарном файле.
    Собственно 2 вопроса:
    1) Где бы почитать про формат хранения на русском?
    2) Есть ли компоненты работы с XML в Дельфи, которые воспринимают Fast Infoset (типа TXMLDocument)?

    (1) А вы программист! Ответ абсолютно точен и бесполезен.
    (2) О, спасибо!

    вот, тоже задумался — стоит ли его вообще использовать?
    есть где-нибудь тесты, насколько именно быстрее происходят загрузки-выгрузки?
    а то с совместимостью фигня, знают его единицы, браузеры не визуализируют, да и текстарь вручную можно подправить, если что, а тут уже разбирать надо по малейшему пуку

    у кого какой опыт на эту тему?

    Глючит твастинфосет все еще. Вот когда риб будет уметь через него, тогда и посмотрим
    (6) всё ещё глючит? неужто за два года не вылизали?
    Эта проблема до сих пор не решена
    v8: загрузка и выгрузка данных в XML и FastInfoSet

    у меня обработка выгрузки/загрузки в xml с установленной галкой фастинфосет не смогла загрузить то, что выгрузила до этого. да и про скорость не могу ничего сказать

    (7) Да он никому не упирался
    (10) меньше места занимает
    ясно. проще забить, как, наверное, и в случае с v8: КаноническаяЗаписьXML — как работает?
    (11) И разбор быстрее, но увы и ах пока нельзя

    Пример на 30 % быстрее сериализация в инфосет.
    8 секунд инфосета против 11 секунд XML.
    И размер меньше.

    Инфосет — это тот же XML, записанный в бинарных данных.

    Fastinfoset 1с что это

    « Как стать программистом 1С » Язык 1С » XML файлы 1С — ЧтениеXML 1С, ЗаписьXML 1С, ЧтениеFastInfoset 1С, ЗаписьFastInfoset 1С, ЧтениеHTML 1С, ЗаписьHTML 1С

    XML файлы 1С — ЧтениеXML 1С, ЗаписьXML 1С, ЧтениеFastInfoset 1С, ЗаписьFastInfoset 1С, ЧтениеHTML 1С, ЗаписьHTML 1С

    XML — текстовые файлы, позволяющие с помощью специальной разметки сохранять сложные данные в структурированном виде.

    FastInfoset — XML файл в бинарном («сжатом») виде.

    HTML — всем известные веб-страницы, которые также представляют из себя аналог XML с нестрогими проверками.

    Объекты чтения/записи XML, FastInfoset, HTML расширяют возможности чтения текстового файла встроенной обработкой тегов разметки.

    Также они используются для объектов ПостроительDOM/ЗаписьDOM (см. далее) как источники данных.

    Файлы XML 1С содержат текстовую информацию, то есть являются текстовыми файлами. Объекты ЧтениеXML 1С и ЗаписьXML 1С являются «надстройкой», позволяющей упростить работу с тегами XML файла 1С.

    Объекты ЧтениеFastInfoset 1С и ЗаписьFastInfoset 1С, ЧтениеHTML 1С и ЗаписьHTML 1С полностью аналогичны ЧтениеXML 1С и ЗаписьXML 1С и служат для работы таким же способом с другими форматами.

    Файл XML 1С, который использовался в примерах

    Текстовое значение

    Пример 1. Считывание файла XML 1С в дерево значений с помощью ЧтениеXML 1С

    Только зарегистрированные пользователи VIP группы могут видеть этот контент.

    //открываем файл XML 1С на чтение с помощью ЧтениеXML 1С
    Файл = Новый ЧтениеXML();
    Файл.ОткрытьФайл(«D:\СтруктураКонфигурации.xml»);

    //подготовим дерево значений
    //у каждой ветки XML может быть наименование, атрибуты и значение
    дзXML = Новый ДеревоЗначений();
    дзXML.Колонки.Добавить(«Наименование»);
    дзXML.Колонки.Добавить(«Значение»);
    дзXML.Колонки.Добавить(«Атрибуты»);

    //так как атрибутов у строки XML может быть несколько — будем записывать их в таблицу значений
    //каждый атрибут имеет имя и значение
    тАтрибутов = Новый ТаблицаЗначений();
    тАтрибутов.Колонки.Добавить(«Имя»);
    тАтрибутов.Колонки.Добавить(«Значение»);

    //уровень вложенности поможет нам понимать когда требуется добавить вложенную ветку, а когда нужно вернуться на уровень вверх
    УровеньВложенности = 0;
    //текущая строка — строка дерева, будет меняться при увеличении вложенности
    ТекущаяСтрока = Неопределено;
    //чтение файла XML 1С производится не построчно, а по структуре, при окончании файла чтение вернет ЛОЖЬ
    Пока Файл.Прочитать() Цикл

    //нас интересуют три вида узлов — начало элемента, текст (значение элемента) и конец элемента (чтобы вернуться на уровень вверх)
    Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    //в начале элемента увеличиваем уровень вложенности, в конце элемента уменьшаем
    УровеньВложенности = УровеньВложенности + 1;

    //если это первая строка, то добавим ее в самый верх дерева и сохраним только наименование
    Если ТекущаяСтрока = Неопределено Тогда
    ТекущаяСтрока = дзXML.Строки.Добавить();
    ТекущаяСтрока.Наименование = Файл.Имя;
    Продолжить;
    Иначе
    //вложенные строки
    ТекущаяСтрока = ТекущаяСтрока.Строки.Добавить();
    ТекущаяСтрока.Наименование = Файл.Имя; //сохраним наименование

    //есть ли у этого элемента XML атрибуты?
    Если Файл.КоличествоАтрибутов() > 0 Тогда
    //если да — скопируем подготовленную пустую таблицу для сохранения атрибутов
    тАтрибутыУзла = тАтрибутов.Скопировать();
    //цикл по количеству атрибутов у этого элемента
    Для Сч = 0 по Файл.КоличествоАтрибутов()-1 Цикл
    //для каждого атрибута запомним имя и значение
    Строка = тАтрибутыУзла.Добавить();
    Строка.Имя = Файл.ИмяАтрибута(Сч);
    Строка.Значение = Файл.ЗначениеАтрибута(Сч);
    КонецЦикла;
    //сохраним таблицу атрибутов элемента в текущую строку
    ТекущаяСтрока.Атрибуты = тАтрибутыУзла;
    КонецЕсли;
    КонецЕсли;

    ИначеЕсли Файл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
    //в начале элемента увеличиваем уровень вложенности, в конце элемента уменьшаем
    УровеньВложенности = УровеньВложенности — 1;
    //возвращаем текущую строку на уровень вверх
    ТекущаяСтрока = ТекущаяСтрока.Родитель;

    ИначеЕсли Файл.ТипУзла = ТипУзлаXML.Текст Тогда
    //если у элемента есть значение — просто сохраним его
    ТекущаяСтрока.Значение = Файл.Значение;

    Пример 2. Запись файла 1С XML с помощью объекта ЗаписьXML 1С

    Только зарегистрированные пользователи VIP группы могут видеть этот контент.

    //создаем файл ЗаписьXML 1С
    Файл = Новый ЗаписьXML();
    Файл.ОткрытьФайл(«D:\СтруктураКонфигурации.xml», «UTF-8»);
    Файл.ЗаписатьНачалоЭлемента(«Конфигурация»);

    //по метаданным обходим все справочники (подробнее см. «Работа с метаданными»)
    Для каждого Справочник из Метаданные.Справочники Цикл

    //ЗаписатьНачалоЭлемента — открывает новую [подчиненную] ветку
    Файл.ЗаписатьНачалоЭлемента(«Справочник»);
    //ЗаписатьАтрибут — записывает атрибут в открытую ранее ветку
    Файл.ЗаписатьАтрибут(«Имя», Справочник.Имя);
    Файл.ЗаписатьАтрибут(«Синоним», Справочник.Синоним);

    //по метаданным обходим все реквизиты справочника
    Для каждого Реквизит из Справочник.Реквизиты Цикл
    Файл.ЗаписатьНачалоЭлемента(«Реквизит»);
    Файл.ЗаписатьАтрибут(«Имя», Реквизит.Имя);
    Файл.ЗаписатьАтрибут(«Синоним», Реквизит.Синоним);
    Файл.ЗаписатьКонецЭлемента();
    КонецЦикла;

    //по метаданным обходим все табличные части справочника
    Для каждого ТЧ из Справочник.ТабличныеЧасти Цикл
    Файл.ЗаписатьНачалоЭлемента(«ТабличнаяЧасть»);
    Файл.ЗаписатьАтрибут(«Имя», ТЧ.Имя);
    Файл.ЗаписатьАтрибут(«Синоним», ТЧ.Синоним);

    Для каждого Реквизит из ТЧ.Реквизиты Цикл
    Файл.ЗаписатьНачалоЭлемента(«Реквизит»);
    Файл.ЗаписатьАтрибут(«Имя», Реквизит.Имя);
    Файл.ЗаписатьАтрибут(«Синоним», Реквизит.Синоним);
    Файл.ЗаписатьКонецЭлемента();
    КонецЦикла;

    //ЗаписатьКонецЭлемента — «закрывает» открытую ранее с помощью ЗаписатьНачалоЭлемента ветку
    Файл.ЗаписатьКонецЭлемента();
    КонецЦикла;

    Проголосовать за этот пост:

    Fast Infoset в XML

    Добрый день.
    Коллеги, подскажите. Тема версионирования объектов.
    Есть объект сериализованный в формате Fast Infoset. Типовое версионирование делает так.

    Как можно этот формат переконвертить в обычный читаемый xml, исправить и обратно конвертировать в Fast Infoset?

    По теме из базы знаний

    • Выгрузка Загрузка Данных COM-XML v8.1
    • XDTO — часть 3
    • Выгрузка и загрузка данных XML с отбором по регистрации на узле обмена
    • Подсистема «Версионирование объектов». Ошибка сохранения в xml
    • RabbitMQ+КД 3. История повторения чужого опыта. Наступаем на одни и те же грабли дважды
    • Дата
    • Дата
    • Рейтинг всех уровней
    • Рейтинг 1-го уровня
    • Древо развёрнутое
    • Древо свернутое

    Свернуть все
    2. buganov 197 24.01.19 04:53 Сейчас в теме

    ЧтениеXML = Новый ЧтениеFastInfoSet; ЧтениеXML.УстановитьДвоичныеДанные(ДвоичныеДанные); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); Пока ЧтениеXML.Прочитать() Цикл ЗаписьXML.ЗаписатьТекущий(ЧтениеXML); КонецЦикла; СтрокаXML = ЗаписьXML.Закрыть(); ТД = Новый ТекстовыйДокумент; ТД.УстановитьТекст(СтрокаXML); ТД.Записать(Путь + ".xml", КодировкаТекста.UTF8);

    Для записи смотрите ЗаписьFastInfoset

Добавить комментарий

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