Формат fastinfoset что это

Формат fastinfoset что это

« Как стать программистом 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С

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

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

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

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

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

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

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

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

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

Источник

Что такое быстрый инфосет?

в Компьютеры 28.03.2020 0 58 Просмотров

Fast Infoset (FI – быстрый инфосет) – это спецификация, которая описывает средства доставки данных в документе на языке расширяемой разметки (XML) в двоичном кодированном формате. Закодированный вывод XML называется документом быстрого инфо-набора и значительно меньше своего полного представления XML. Хотя схема кодирования похожа на другие методы сжатия документов, используемая схема кодирования не только сжимает документ XML, но также улучшает обработку данных XML.
Спецификация FI была разработана совместно Международным союзом электросвязи (МСЭ-T) и Международной организацией по стандартизации (ISO) с целью выработки рекомендации по набору XML-данных Консорциума World Wide Web (W3C). Инфо-набор W3C – это средство для определения данных, которые могут содержаться в документе XML, но это не обязательно. В соответствии с рекомендацией W3C информационный набор должен удовлетворять требованиям синтаксиса для того, что бы правильно сформировать XML, а также должен придерживаться правильных имён атрибутов и элементов, определённых в пространстве имён XML. Но исходный документ XML не обязательно должен быть действительным до того, как он будет закодирован в документ быстрого инфо-набора. Это означает, что информационный набор не обязательно должен содержаться в документе XML и может быть создан другими способами.

Формат fastinfoset что это. Смотреть фото Формат fastinfoset что это. Смотреть картинку Формат fastinfoset что это. Картинка про Формат fastinfoset что это. Фото Формат fastinfoset что это

Метод кодирования, используемый в документах быстрого информационного набора, известен как Абстрактная Синтаксическая Нотация 1 (ASN.1). Использование языка кодирования ASN.1 в качестве основы для протокола Fast Infoset позволяет документу сохранить все аспекты самоописания XML-документа, а также некоторые дополнительные функции. Строки, которые регулярно используются в документе, индексируются и заменяются числом. Это включает в себя имена XML, а также их атрибуты. Любые двоичные данные, такие как изображения или видео, также могут быть включены непосредственно в кодирование без необходимости проходить через дополнительную схему кодирования.

Как метод сериализации, Fast Infoset несколько отличается от других методов. Одним из примеров является метод эффективного обмена XML (EXI), который является рекомендованным W3C двоичным форматом XML. Хотя документ EXI может предоставлять более компактное представление информационного набора XML, для этого требуется, чтобы схема XML, имела полное описание исходного документа XML, и была известна на обоих концах передачи, чтобы можно было выполнять кодирование и декодирование документа. Кодировка FI может также использовать расширенные функции, которые также используют схему XML для дополнительного сжатия.

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

Источник

РеКС — друг в мире компьютеров

Приведение простых типов к типу Строка

Приведение простого типа к строке происходит неявным вызовом функции Строка(), которая использует текущие региональные настройки среды пользователя ОС, и поэтому в различных системах и различных сеансах может возвращать различные результаты, что самом по себе не приемлемо во многих задачах. Приведение к строке сложных типов вообще не дает представление о содержании, а содержит только краткое имя типа.

Функция Формат

вид Форматной СтрокиФормат( )=Описание
(1234567.89)
(0)
1 234 567,89Отсутствие строки форматирования эквивалентно функции Строка(…)
ЧЦ (ND)
(число цифр)
(1234567.89,»ЧЦ=10;»)
(1234567.89,»ЧЦ=7;»)
(1234567.89,»ЧЦ=6;»)
1 234 568
1 234 568
999 999
общее число отображаемых десятичных разрядов целой и дробной частей. Исходное число округляется при этом в соответствии с правилами округления Окр15как20. Если указан этот параметр, то для отображения дробной части числа обязательно указание параметра ЧДЦ, иначе дробная часть отображаться не будет.
ЧВН ()
(число вывод нуля)
(1234567.89,»ЧЦ=9;ЧВН=;»)
(1234567.89,»ЧЦ=6;ЧВН=;»)
001 234 568
999 999
если параметр указан, лидирующие нули выводятся. Если не указан — лидирующие нули не выводятся. Значение параметра игнорируется.
ЧН (NZ)
(число ноль)
(0,»ЧН=;»)
(0,»ЧН=;ЧЦ=9;»)
(0,»ЧЦ=9;ЧН=;ЧВН=;»)
0
0
000 000 000
строка, представляющая нулевое значение числа. Если не задано, то представление в виде пустой строки. Если задано «ЧН=», то в виде «0». Не используется для числовых полей ввода.
ЧРГ (NGS)
(число разделитель групп)
(1234567.89,»ЧРГ=;»)
(1234567.89,»ЧРГ= «)
(1234567.89,»ЧРГ=+;»)
(1234567.89,»ЧРГ=0;»)
1 234 567,89
1 234`567,89
1+234+567,89
102340567,89
символ-разделитель групп целой части числа. Если в качестве разделителя использовать пустую строку, то в этом случае разделителем будет символ неразрывного пробела.
ЧГ (NG)
число группа
(1234567.89,»ЧГ=;»)
(1234567.89,»ЧГ=0;»)
(1234567.89,»ЧГ=3;»)
(1234567.89,»ЧГ=3,2;»)
1234567,89
1234567,89
1234 567,89
12 34 567,89
порядок группировки разрядов числа. В качестве значения указываются числа, через запятую, обозначающие количество группируемых разрядов справа налево. Имеют смысл только два первых числа. Первое из них указывает первичную группировку, то есть ту, которая будет использована для наименее значимых разрядов целой части числа. Если второе число не указано, то будут сгруппированы только наименее значимые разряды. Если в качестве второго числа задан 0, то для всех разрядов целой части числа будет применено значение указанное для первичной группировки. Если в качестве второго числа используется значение, отличное от 0, то это значение будет использовано для группировки всех разрядов, кроме уже сгруппированных наименее значимых.
ЧРД (NDS)
число разделитель дробной части
(1234567.89,»ЧРД=;»)
(1234567.89,»ЧРД=.;»)
(1234567.89,»ЧРД=:;»)
1 234 567,89
1 234 567.89
1 234 567:89
символ-разделитель целой и дробной части.
ЧДЦ (NFD)
число десятичные цифры
(1234567.89,»ЧДЦ=0;»)
(1234567.89,»ЧДЦ=1;»)
(1234567.89,»ЧДЦ=3;»)
1 234 567
1 234 567,9
1 234 567,890
число десятичных разрядов в дробной части. Исходное число округляется при этом в соответствии с правилами округления Окр15как20.
ЧО (NN)
число отрицательные
(-1234567.89,»ЧО=0″)
(-1234567.89,»ЧО=1″)
(-1234567.89,»ЧО=2″)
(-1234567.89,»ЧО=3″)
(-1234567.89,»ЧО=4″)
(1 234 567,89)
-1 234 567,89
— 1 234 567,89
1 234 567,89-
1 234 567,89 —
представление отрицательных чисел.
ЧС (NS)
число сдвиг
(1234567.89,»ЧС=0;»)
(1234567.89,»ЧС=1;»)
(1234567.89,»ЧС=9;»)
(1234567.89,»ЧС=-6;»)
1 234 567,89
123 456,789
0,00123456789
1 234 567 890 000
сдвиг разрядов: положительный — деление, отрицательный — умножение. Другими словами, это означает, что исходное число будет умножено или поделено на 10*С, где С — значение параметра по модулю.
ЧФ (NF)
число формат
(1234567.89,»ЧФ=’Ч штук’;»)
(12345.89,»ЧФ=’Вес: Ч’;»)
(123,»ЧФ=’ЧЧЧ’;»)
1 234 567,89 штук
Вес: 12 345,89
123123123
шаблон форматирования числа. В строке можно использовать символ Ч(N) для указания позиции, в которую нужно вывести число. Число выводится с учетом остальных параметров, заданных в форматной строке. Остальные символы выводятся как есть. Символы, находящиеся между двойными или одинарными кавычками выводятся как есть. Шаблон форматирования не применяется к числу 0 (за исключением случая наличия в формате строки параметра «ЧН=»).
Форматирование типа Булево
БЛ (BF)
булево Ложь
(Истина,»БЛ=Неправда;»)
(Ложь,»БЛ=Неправда;»)
Да
Неправда
строка, представляющая логическое значение Ложь.
БИ (BT)
булево Истина
(Истина,»БИ=Правда;»)
(Ложь,»БИ=Правда;»)
Правда
Нет
строка, представляющая логическое значение Истина.
БИ=;БЛ=;
булево Истина и Ложь
(Истина,»БИ=Свет;БЛ=Тьма»)
(Ложь,»БИ=Свет;БЛ=Тьма»)
Свет
Тьма
комбинированная форматная строка для типа Булево
Полезные комбинированные форматные строки
ЧГ=;ЧН=;
ноль и числа без групп
(0,»ЧГ=;ЧН=;»)
(1234567,89,»ЧГ=;ЧН=;»)
0
-1234567,89
отменяет числовые группы и выводит «0»
для обычного отображения и экспорта в Ecxel
ЧРД=.;ЧГ=0;ЧН=;
точка, ноль, без групп
(0,»ЧРД=.;ЧГ=0;ЧН=;»)
(1234567.89,»ЧРД=.;ЧГ=0;ЧН=;»)
0
1234567.89
использует десятичную точку, отменяет числовые группы и выводит «0»
для вычисления в формулах, для обмена данными и сериализации

Для преобразования к строке типа Дата используют другие виды форматных строк:

вид Форматной СтрокиФормат( )=Описание
(‘00010101000000’)
(‘20060504010203’)
01.02.2003 4:05:06Отсутствие строки форматирования эквивалентно функции Строка(…)
ДФ (DF)
(дата формат)
(‘20030201040506’, «ДФ=’дддд дд.ММ.гггг ЧЧ:мм:сс’»)
(‘20030201040506’, «ДФ=»»ддд дд ММММ гггг’г.’»»»)
(‘20030201040506’, «ДФ=’д.М.г Ч:м:с’»)
суббота 01.02.2003 04:05:06
Сб 01 февраля 2003г.
1.2.3 4:5:6
формат даты позволяет задать произвольный способ преобразоания

Важно! Порядок следования опций форматной строки для ДЛФ (ДВ или ДДВ) не может быть изменен. При комбинировании ДФ и ДЛФ, приоритет получает ДФ, а ДЛФ игнорируется.

ДП (DE)
(дата пустая)
(‘00010101000000’, «ДЛФ=Д;ДП=’без даты’»)
(‘20030201040506’, «ДЛФ=Д;ДП=’без даты’»)
без даты
01.02.2003
формат пустой даты устанавливает текст представления пустой даты

Сериализация и десериализация

Понятие сериализации данных применяется, когда некоторые данные некоторого типа необходимо преобразовать в строковую последовательность, но не с целью представления, а для передачи средствами какого-либо потока. После прохождения сериализованной строковой последовательностью потока она должна быть точно преобразована к первоначальному или эквивалентному типу с эквивалентным значением.

Сериализация 1С

Платформа 1С реализует собственный формат сериализации, который может быть использован в модулях с компиляцией &НаСервере парой функций прямого и обратного преобразования:

Пример сериализации реквизита типа СписокЗначений:

Источник

Все XML-технологии за 5 минут. XML, XML-NS, Fast Infoset, XPATH, XSLT, XSD, DTD, XML schema, SOAP, WSDL, MTOM, SAAJ, DOM, SAX, STAX, JAXB, dom4J, jdom, xerces, xalan, xsteam, JAX-WS, JAX-RT, SOA, ESB.

суть текстовый формат хранения структурированных данных,

Well-formed XML

XML который удовлетворяет ограничениям

т.е. Well formed = такой XML уже можно парсить парсером.

Valid XML

Формулировка означает что данные файла соответствуют некоторой структуре документа или правилам; правила задаются через cпециальный синтаксис – XML Schema или DTD. Valid = такой XML уже можно обрабатывать парсером с включенной валидацией

Это старый формат валидации XML, чем-то напоминает BNF-нотацию объявления синтаксиса. Выглядит примерно так

XML Schema / XSD

Более новый вариант валидации

Relax NG

Альтернативный способ описания струкутры xml, считается более простым чем xml schema. Бывает в 2х видах – XML и compact. Пример compact синтаксиса

XML Namespaces

Пространства имен, фича которая появилась в xml позднее и поэтому местами продумана довольно плохо и костыльно. Основная идея в том что любой элемент можен объявить префикс namespace и проассоциировать этот префикс с URL. URL используется просто как уникальный идентификатор Это позволяет в теории не бояться что частям xml не хватит имен в названиях, это активно используется в Xpath и при валидации.

Xpath

Язык для выполнения запросов к XML DOM дереву. Достаточно гибкий, но движок запросов, как правило, не очень быстрый. Пример: выбрать все элементы BBB в дереве с атрибутом name равным bbb:

выбрать все элементы, являющиеся прямыми потомками /AAA/CCC/DDD

Язык для работы с XML шаблонами – позволяет выбирать данные, преобразовывать и мержить с другими xml. Чаще всего используется для отделения разметки веб страницы (xhtml) и данных (например таблиц выгруженных в xml) или для процессинга\конвертации xml-файлов. Побочным эффектом такой универсальности является мозго-взрывной синтаксис и совершенно отвратный и нечитаемый результат (имхо). Хотя при должном упорстве язычок поддается изучению, в совершенстве его знают только избранные и некоторые верстальщики. Пример

Binary XML

Поскольку XML так плох по части производительности и избыточности хранения, регулярно предпринимаются попытки изобрести более нативное представление \ замену Fast Infoset — цель формата сокращение места и ускорение парсинга. Vtd xml – отличный формат обработки гигабайтный DOM- деревьев.

JAVA + XML

JDK хорошо поддерживает все что есть в XML мире. По дефолту включаются почти все парсеры – SAX, StaX, DOM. С версии 1.4+ JDK поддерживает динамическую регистрацию XML-парсеров. Такие парсеры вызываются внутри JDK при использовании его XMl API. Раньше нужно было добавлять парсер как доп. библиотеку, теперь с 1.4 по дефолту используется XERCES, который переписывают от версии к версии. Важно : из за смены JDK могут меняться\ломаться и сами парсеры – от этого переносимость приложения между разными JDK не такая легкая, как того бы хотелось java-разработчикам.

Типы парсеров

Вот такая табличка хорошо сравнивает их по фичам.

FeatureStAXSAXDOMTrAX
API TypePull, streamingPush, streamingIn memory treeXSLT Rule
Ease of UseHighMediumHighMedium
XPath CapabilityNoNoYesYes
CPU and Memory EfficiencyGoodGoodVariesVaries
Forward OnlyYesYesNoNo
Read XMLYesYesYesYes
Write XMLYesNoYesYes
Create, Read, Update, DeleteNoNoYesNo

XML фреймворки и парсеры

Jdom – чуть устаревший предшественник dom4j, хорошая библиотека т.к. всё есть.

xom – очень хорошо продуманная библиотека, приятно пользоваться, умеет много разного. Отдельных похвал заслуживает ее подход к дизайну API.

vtd-xml – супер быстрый движок для обработки гигабайтных DOM-деревьев, использует собственный бинарный формат для хранения дерева объектов, есть нативные реализации. Один из самых интересных фреймворков из того что я видел.

xerces-j – парсер по умолчанию в JDK1.4+

xalan – популярный XSLT движок, используется в куче разных фреймворков.

Beans-to-XML mapping

JAXB – мощная система, входит в JAXP ( в JDK);

Xstream – легкий быстрый и удобный фреймворк для маппинга xml в java-бины

Формат fastinfoset что это. Смотреть фото Формат fastinfoset что это. Смотреть картинку Формат fastinfoset что это. Картинка про Формат fastinfoset что это. Фото Формат fastinfoset что это

WEB SERVICES

SOAP & WSDL

SOAP – протокол для пересылки сообщений.

WSDL –язык описания веб-сервисов WSDL определяет

Есть много разных способов отображения объектов на SOAP сообщения (SOAP-binding). Различают вот такие варианты:

Биндинг по сути определяет что попадет в xml-сообщение: имена параметров? Типы параметров? Имя вызванной процедуры? Итп. Про биндинг детально можно прочитать тут

Передача бинарных данных

Совместимость

Разные SOAP версии\биндинги не совместимы, например эти связки НЕ будут работать по дефолту:

Разные производители (Microsoft, Sun) в своих веб-сервисах полагаются на различные дефолты.. поэтому иногда бывает непросто дернуть даже обычный веб-сервис.

JAVA + WEB SERVICES

JAXWS/METRO

Запускать можно вот таким кодом

Apache AXIS

Популярный и хороший фреймвок, текущая весия 2+, кое-где еще распространен Axis1.x но он не так удобен в использовании.. http://axis.apache.org/axis2/java/core/

Apache CXF

Фреймворк рабочий и полноценный, по попользовав его остался крайне недоволен кривой поддержкой некоторых вещей и глючностью. http://cxf.apache.org/

Spring WS

Кошерная реализация от SpringSource. Не использовал, но все хвалят. http://static.springsource.org/spring-ws/sites/2.0/

SOA / ESB / BPM

Sales рисуют абстрактные картинки.. на которых все хорошо, гибко и чудесно. Но в головах — туман.. и желание потратить немного денег на всё это.. и с этим приходят чтобы “интегрироваться”. Вот хорошая статья как введение в наши проблемы — SOA и BPM

SOA — это очень простая концепция

Почему SOA это трудно

Примеры ESB продуктов:

ESB — Задачка из жизни

Нужно оценить применимость BizTalk и конкурирующих продуктов с точки зрения:
легкости интеграции с разными приложениями (написанных на Silverlight / ASP.NET / mobile apps)
скорости обучения девелоперов
стоимости деплоймента в энтерпрайз виде
безопасности
надежности
скорости работы
устойчивости к нагрузкам и т.д.

Напишите, если у Вас был опыт работы с BizTalk или его аналогами. В чем принципиальная выгода от использования BizTalk, по сравнению, например, с «самописной» системой обмена данными между приложениями?
Имхо, есть как минимум 3 «самописные» замены BizTalk:

Моё имхо: Плюсы применения BizTalk

Утилиты для xml

XMLPAD – править, смотреть, считать XPATH, валидировать итп

Xml Notepad – смотреть 1Gb+ файлы

Notepad++ — есть достаточно хороший plugin xml tools для работы с XML

SOAP UI – для работы с веб-сервисами: вызов, генерация тестовых сервисов по wsdl, отладка, авто-тесты.

TcpTrace – прозрачный port редиректор\сниффер для просмотра TCP-трафика

Altova, Oxygen – крутые и навороченные XML IDE, в них можно делать практически всё, но необходимость в их использовании довольно сомнительна

Источник

XML в 1С 8.3

Формат fastinfoset что это. Смотреть фото Формат fastinfoset что это. Смотреть картинку Формат fastinfoset что это. Картинка про Формат fastinfoset что это. Фото Формат fastinfoset что это

Формат XML

Общее описание

XML (eXtensible Markup Language) — это расширяемый язык разметки. Он называется расширяемым, потому что разработчик сам определяет структуру тегов и атрибутов внутри XML-документа. XML определяет лишь синтаксис языка.

Как правило XML используется для обмена данными или для хранения данных.

XML-документ состоит из следующих элементов:

XML-документ состоит из элементов (также называют узлами). В свою очередь элемент состоит из тегов.

В XML может быть 2 вида тегов:

Значения

Между открывающим и закрывающим тегом находится значение:

Если у элемента нет значения, то его можно отразить одним тегом:

Данный элемент аналогичен следующему элементу:

Значение может принимать следующие типы:

Элементы могут быть сколько угодно раз вложены друг в друга. У одного элемента может быть сколько угодно вложенных элементов, но только один владелец. Из этого следует, что на самом верху всегда должен быть только один элемент, который называется корневым элементом. Только у корневого элемента нет владельца.

Атрибуты

Каждый элемент может иметь произвольное количество атрибутов. Атрибуты указываются в открывающем теге в виде пары имя = «значение». Имя указывается обычной строкой, значение всегда помещается в кавычки:

Объявление XML

В начале XML-документа может быть следующая строка:

Такая строка называется объявлением XML (другое название XML пролог). В ней указывается версия XML и кодировка. Данная строка не обязательна, если ее нет, то кодировкой по умолчанию считается UTF-8.

Проверка корректности XML

XML-документ должен удовлетворять следующим условиям:

Комментарии в XML

Пространства имен

В XML можно использовать пространства имен. Они позволяют внутри одного документа использовать элементы с одинаковым именем, но принадлежащие разным пространствам имен.

Например, есть следующий XML файл:

Для этого можно объявить пространства имен и указать свое пространство для каждого тега:

Пространство имен может быть объявлено в любом теге в атрибуте xmlns. Сначала указывается префикс, а потом само пространство:

Имя пространства имен должно быть уникальным. Как правило используется URL сайта, хотя можно использовать произвольные идентификаторы.

Теперь перед именем элементов можно указывать префикс, чтобы указать к какому пространству имен он принадлежит. Префикс можно использовать только внутри того элемента (включая все вложенные в него элементы), в котором было объявлено пространство имен:

Можно указать пространство имен без префикса:

В этом случае все теги без префикса автоматически будут принадлежать этому пространству.

Запись XML

Для записи XML файла в 1С используется объект ЗаписьXML. Для создания данного объекта используется следующий конструктор:

Данный объект реализует последовательную запись. Это означает, что документ не загружается полностью в память, а также нельзя перепрыгивать на другие узлы внутри XML документа.

Чтобы указать файл, в который будет записан XML нужно вызвать метод ОткрытьФайл. Первым параметром указывается путь к файлу, вторым кодировка (по умолчанию UTF-8), третьим признак использования BOM (по умолчанию Истина):

Чтобы записать в файл строку с объявлением XML нужно вызвать метод ЗаписатьОбъявлениеXML:

Записывать объявление XML нужно перед записью других элементов, иначе будет выброшено исключение «Ошибочный порядок записи XML».

Для записи тегов используются методы ЗаписатьНачалоЭлемента и ЗаписатьКонецЭлемента. В методе ЗаписатьНачалоЭлемента нужно параметром указать имя тега. В методе ЗаписатьКонецЭлемента ничего не указывается, будет записан закрывающий тег последнего открытого тега:

Для записи значения нужно вызвать метод ЗаписатьТекст, передав параметром записываемое значение. Так как значение записывается между открывающим и закрывающим тегами, то его нужно вызывать до метода ЗаписатьКонецЭлемента:

Для записи атрибутов используются методы ЗаписатьНачалоАтрибута и ЗаписатьКонецАтрибута. В метод ЗаписатьНачалоАтрибута нужно параметром передать имя атрибута. Метод ЗаписатьКонецАтрибута закончит запись последнего начатого атрибута. Между двумя этими методами нужно вызвать метод ЗаписатьТекст для записи значения атрибута. Запись атрибутов должна выполняться сразу после вызова метода ЗаписатьНачалоЭлемента, иначе не будет понятно к какому тегу относятся атрибуты:

Также есть метод ЗаписатьАтрибут, которому параметрами нужно передать имя и значение атрибута. Его можно использовать вместо трех методов: ЗаписатьНачалоАтрибута, ЗаписатьТекст и ЗаписатьКонецАтрибута:

Для записи комментария используется метод ЗаписатьКомментарий. Его можно вызвать в любой момент, комментарий не влияет на структура XML-документа:

При записи элементов XML выполняется контроль правильной последовательности вызовов методов. И если последовательность будет нарушено, то будет выброшено исключение «Ошибочный порядок записи XML».

С помощью метода ЗаписатьБезОбработки можно записать в XML-файл произвольное значение без проверки порядка записи. Параметром можно передать произвольную строку, в том числе уже сформированная часть XML-файла:

В этом случае нужно учитывать, что после записи XML-файл может быть не валидным.

После окончания записи нужно вызвать метод Закрыть, который закроет записываемый файл:

Пример записи XML-файла:

В результате будет получен следующий файл:

Запись XML в строку

Если нужно записать XML не в файл, а в строку, например для передачи через веб-сервис, то нужно вместо метода ОткрытьФайл, вызвать метод УстановитьСтроку. Параметром можно указать кодировку.

При вызове метода Закрыть будет получена строка с XML:

Запись пространства имен

Для записи соответствия префикса и пространства имен используется метод ЗаписатьСоответствиеПространстваИмен. Первым параметром указывается префикс, вторым пространство имен:

Чтобы указать принадлежность элемента определенному пространству имен нужно просто указать его префикс в имени элемента:

Пример записи XML файла с пространством имен:

В результате будет получен следующий XML:

Чтение XML

Для чтения XML файла предназначен объект ЧтениеXML. Для создания данного объекта используется следующий конструктор:

Данный объект реализует последовательное чтение. Это означает, что документ не загружается полностью в память, что позволяет читать даже очень большие файлы. А также это означает, что нельзя перепрыгивать на другие узлы внутри XML-документа, чтение выполняется только последовательно.

Алгоритм чтения XML файла выглядит следующим образом:

Источник

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

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