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

Имеется возможность:
- последовательно читать и записывать 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:

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