Стд::Xml::ЗаписьXml
Объект для потоковой записи XML.
Непосредственно осуществляет запись в поток в процессе формирования XML, не храня записанные данные в памяти.
Запись типов данных осуществляется в соответствии со стандартом XML для каноничной записи, если не указано иное.
Сравнение
Ссылочное
Иерархия типа
Базовые типы: Объект
Примеры
Общие примеры
Запись XML
Строковое представление исходного объекта для записи в XML
Код записи XML
конст ПространствоИмен = "urn::my.test.company"
конст Префикс = "ns"
метод ЗаписатьXmlТовары(Товары: СтруктураТовары): Строка
исп ПотокЗаписи = новый СтроковыйПотокЗаписи()
знч НастройкиЗаписиXml = новый НастройкиЗаписиXml()
НастройкиЗаписиXml.ДобавлятьОтступы = Ложь
знч ЗаписьXml = новый ЗаписьXml(ПотокЗаписи, НастройкиЗаписиXml)
ЗаписьXml.ЗаписатьНачалоДокумента()
ЗаписьXml.ЗаписатьНачалоЭлемента(Префикс + ":Товары")
ЗаписьXml.ЗаписатьСоответствиеПространстваИмен(Префикс, ПространствоИмен)
ЗаписатьЗаголовок(Товары.Заголовок, ЗаписьXml)
Товары.Товары.ДляКаждого(Товар -> ЗаписатьТовар(Товар, ЗаписьXml))
ЗаписьXml.ЗаписатьКонецДокумента()
возврат ПотокЗаписи.ВСтроку()
;
метод ЗаписатьЗаголовок(Заголовок: СтруктураЗаголовок, ЗаписьXml: ЗаписьXml)
ЗаписьXml
.ЗаписатьНачалоЭлемента("Заголовок")
.ЗаписатьНачалоЭлемента("ИдВыгрузки")
.ЗаписатьУуид(Заголовок.ИдВыгрузки)
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("МоментВыгрузки")
.ЗаписатьМомент(Заголовок.МоментВыгрузки)
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("ДанныеОтправителяXml")
.ЗаписатьСекциюCData(Заголовок.ДанныеОтправителяXml)
.ЗаписатьКонецЭлемента()
.ЗаписатьКонецЭлемента()
;
метод ЗаписатьТовар(Товар: СтруктураТовар, ЗаписьXml: ЗаписьXml)
ЗаписьXml
.ЗаписатьНачалоЭлемента("Товар")
.ЗаписатьАтрибут("Ид", Товар.Ид)
.ЗаписатьАтрибут("Наименование", Товар.Наименование)
.ЗаписатьАтрибут("Группа", Товар.Группа)
ЗаписатьПроизводитель(Товар.Производитель, ЗаписьXml)
ЗаписатьХарактеристики(Товар.Характеристики, ЗаписьXml)
ЗаписьXml.ЗаписатьКонецЭлемента()
;
метод ЗаписатьПроизводитель(Производитель: СтруктураПроизводитель, ЗаписьXml: ЗаписьXml)
ЗаписьXml
.ЗаписатьНачалоЭлемента("Производитель")
.ЗаписатьАтрибут("Наименование", Производитель.Наименование)
если Производитель.Страна != Неопределено
ЗаписьXml.ЗаписатьАтрибут("Страна", Производитель.Страна)
;
если Производитель.Штрихкод != Неопределено
ЗаписьXml.ЗаписатьАтрибутЧисло("Штрихкод", Производитель.Штрихкод)
;
ЗаписьXml.ЗаписатьКонецЭлемента()
;
метод ЗаписатьХарактеристики(Характеристики: Соответствие<Строка, Строка>?, ЗаписьXml: ЗаписьXml)
если Характеристики != Неопределено и Характеристики.Размер() > 0
ЗаписьXml.ЗаписатьКомментарий("Необязательный элемент")
ЗаписьXml.ЗаписатьНачалоЭлемента("Характеристики")
Характеристики.ДляКаждого((Элемент) ->
ЗаписьXml
.ЗаписатьНачалоЭлемента("Характеристика")
.ЗаписатьАтрибут("Имя", Элемент.Ключ)
.ЗаписатьАтрибут("Значение", Элемент.Значение)
.ЗаписатьКонецЭлемента())
ЗаписьXml.ЗаписатьКонецЭлемента()
;
;
Результат записи в строку XML
<?xml version="1.0" encoding="UTF-8"?>
<ns:Товары xmlns:ns="urn::my.test.company">
<Заголовок>
<ИдВыгрузки>21fe9796-4735-4334-84fd-6d0b0b83b517</ИдВыгрузки>
<МоментВыгрузки>2023-10-17T11:48:22Z</МоментВыгрузки>
<ДанныеОтправителяXml><![CDATA[<Отправитель>Моя тестовая компания</Отправитель>]]></ДанныеОтправителяXml>
</Заголовок>
<Товар Ид="И100" Наименование="Коробка картонная" Группа="Упаковка">
<Производитель Наименование="ОКК" Страна="РФ" Штрихкод="1234567891234"/>
<Характеристики>
<Характеристика Имя="Толщина картона" Значение="5мм"/>
<Характеристика Имя="Вес" Значение="300г"/>
</Характеристики>
</Товар>
<Товар Ид="И101" Наименование="Маркер" Группа="Канцтовары">
<Производитель Наименование="GlobalMarker"/>
<Характеристики>
<Характеристика Имя="Цвет" Значение="красный"/>
</Характеристики>
</Товар>
<Товар Ид="И102" Наименование="Набор крючков" Группа="ТоварыДляРыбалки">
<Производитель Наименование="PNC" Страна="Палау" Штрихкод="2234567891234"/>
</Товар>
</ns:Товары>
Запись значений атрибутов и элементов различных типов
Код записи XML
метод ЗаписатьXmlТипы(): Строка
исп ПотокЗаписи = новый СтроковыйПотокЗаписи()
знч ЗаписьXml = новый ЗаписьXml(ПотокЗаписи)
ЗаписьXml
.ЗаписатьНачалоДокумента()
.ЗаписатьНачалоЭлемента("Типы")
.ЗаписатьНачалоЭлемента("Атрибуты")
.ЗаписатьАт рибут("Строка", "Строка")
.ЗаписатьАтрибутБайты("Байты", {74657374})
.ЗаписатьАтрибутБайтыBase64("БайтыBase64", {74657374})
.За писатьАтрибутБулево("Булево", Истина)
.ЗаписатьАтрибутВремя("Время", {23:59:59.999})
.ЗаписатьАтрибутДата("Дата", {2023-01-01})
.ЗаписатьАтрибутДатаВре мя("ДатаВремя", {2023-01-01 23:59:59.999})
.ЗаписатьАтрибутДлительность("Длительность", 144ч5мс)
.ЗаписатьАтрибутМомент("Момент", {2020-04-16T20:30:40.345Z})
.ЗаписатьАтрибутУуид("Ууид", {21fe9796-4735-4334-84fd-6d0b0b83b517})
.ЗаписатьАтрибутЧисло("Число", 123.45)
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Элементы")
.ЗаписатьНачалоЭлемента("Строка")
.ЗаписатьТекст("Строка")
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Байты")
.ЗаписатьБайты({74657374})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("БайтыBase64")
.ЗаписатьБайтыBase64({74657374})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Булево")
.ЗаписатьБулево(Истина)
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Время")
.ЗаписатьВремя({23:59:59.999})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Дата")
.ЗаписатьДату({2023-01-01})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("ДатаВремя")
.ЗаписатьДатаВремя({2023-01-01 23:59:59.999})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Длительность")
.ЗаписатьДлительность(144ч5мс)
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Момент")
.ЗаписатьМомент({2020-04-16T20:30:40.345Z})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Ууид")
.ЗаписатьУуид({21fe9796-4735-4334-84fd-6d0b0b83b517})
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("Число")
.ЗаписатьЧисло(123.45)
.ЗаписатьКонецЭлемента()
.ЗаписатьКонецЭлемента()
.ЗаписатьКонецЭлемента()
.ЗаписатьКонецДокумента()
возврат ПотокЗаписи.ВСтроку()
;
Результат записи в строку XML
<?xml version="1.0" encoding="UTF-8"?>
<Типы>
<Атрибуты Строка="Строка" Байты="74657374" БайтыBase64="dGVzdA" Булево="true" Время="23:59:59.999"
Дата="2023-01-01" ДатаВремя="2023-01-01T23:59:59.999" Длительность="PT144H0.005S" Момент="2020-04-16T20:30:40.345Z"
Ууид="21fe9796-4735-4334-84fd-6d0b0b83b517" Число="123.45" />
<Элементы>
<Строка>Строка</Строка>
<Байты>74657374</Байты>
<БайтыBase64>dGVzdA</БайтыBase64>
<Булево>true</Булево>
<Время>23:59:59.999</Время>
<Дата>2023-01-01</Дата>
<ДатаВремя>2023-01-01T23:59:59.999</ДатаВремя>
<Длительность>PT144H0.005S</Длительность>
<Момент>2020-04-16T20:30:40.345Z</Момент>
<Ууид>21fe9796-4735-4334-84fd-6d0b0b83b517</Ууид>
<Число>123.45</Число>
</Элементы>
</Типы>
См. также
ЧтениеXml
Конструкторы
ЗаписьXml
Конструктор записи XML в поток
Поток с настройками
Настройки в кодировке
Кодировка.
Методы
ЗаписатьАтрибут
Записывает значение
Значение атрибута
Имя с пространством имен
ПространствоИмен.
Атрибутов может быть произвольное количество.
Атрибут может идентифицироваться полным именем или локальным именем и URI пространства имен.
Атрибуты должны записываться непосредственно после записи начала элемента, иначе вызывается исключение.
Возвращает текущий экземпляр.
Исключения
ИсключениеЗаписиXml - при ошибке записи элемента.
ИсключениеНедопустимоеСостояние - если текущий узел не является началом элемента.
ЗаписатьАтрибутБайты
Записывает значение типа Байты
Значение в шестнадцатеричной кодировке в атрибут
Имя с пространством имен
ПространствоИмен.
Атрибут может идентифицироваться полным именем или локальным именем и URI пространства имен.
Атрибуты должны записываться непосредственно после записи начала элемента, иначе вызывается исключение.
Исключения
ИсключениеЗаписиXml - при ошибке записи элемента.
ИсключениеНедопустимоеСостояние - если текущий узел не является началом эл емента.
ЗаписатьАтрибутБайтыBase64
Записывает значение типа Байты
Значение как число в кодировке Base64 в атрибут
Имя с пространством имен
ПространствоИмен.
Атрибут может идентифицироваться полным именем или локальным именем и URI пространства имен.
Атрибуты должны записываться непосредственно после записи начала элемента, иначе вызывается исключение.
Исключения
ИсключениеЗаписиXml - при ошибке записи элемента.
ИсключениеНедопустимоеСостояние - если текущий узел не является началом элемента.
ЗаписатьАтрибутБулево
Записывает значение типа Булево
Значение в атрибут
Имя с пространством имен
ПространствоИмен.
Атрибут может идентифицироваться полным именем или локальным именем и URI пространства имен.
Атрибуты должны записываться непосредственно после записи начала элемента, иначе вызывается исключение.
Исключения
ИсключениеЗаписиXml - при ошибке записи элемента.
ИсключениеНедопустимоеСостояние - если текущий узел не является началом элемента.
ЗаписатьАтрибутВремя
Записывает значение типа Время
Значение в атрибут
Имя с пространством имен
ПространствоИмен.
Атрибут может идентифицироваться полным именем или локальным именем и URI пространства имен.
Атрибуты должны записываться непосредственно после записи начала элемента, иначе вызывается исключение.
Исключения