Тип: ПараметрыЗаписиXML. Определяет текущие параметры записи XML.
Полное описание, параметры и ограничения
ЗаписьXML.Параметры (XMLWriter.Settings)
ЗаписьXML (XMLWriter)
Параметры (Settings)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: ПараметрыЗаписиXML.
Определяет текущие параметры записи XML.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Настроить читаемый XML и проверить обратное чтение
UTF-8, версия 1.0, отступы элементов и атрибутов, два пробела. После записи снова читаем свой XML и сравниваем данные.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
ПоУмолчанию = Новый ПараметрыЗаписиXML;
Параметры = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Истина, Истина, " ");
Сообщить(Параметры.Версия = "1.0");
Сообщить(Параметры.Кодировка = "UTF-8");
Сообщить(Параметры.Отступ И Параметры.ОтступАтрибутов);
Сообщить(Параметры.СимволыОтступа = " ");
Сообщить(ПоУмолчанию.Версия = "1.0");
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку(Параметры);
Попытка
Сообщить(Запись.Параметры.Версия = "1.0");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A&B");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга <учебник> & пособие");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
XML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Товар = ПрочитатьУчебныйТовар(XML);
Сообщить(Товар.Код = "A&B");
Сообщить(Товар.Количество = "3");
Сообщить(Товар.Текст = "Книга <учебник> & пособие");
Сообщить(XML);
КонецПроцедуры
Функция ПрочитатьУчебныйТовар(XML)
Чтение = Новый ЧтениеXML;
Результат = Новый Структура("Корень,Код,Количество,Текст", "", "", "", "");
ВТоваре = Ложь;
Попытка
Чтение.УстановитьСтроку(XML);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ПустаяСтрока(Результат.Корень) Тогда
Результат.Корень = Чтение.ЛокальноеИмя;
КонецЕсли;
Если Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Истина;
Результат.Код = Чтение.ПолучитьАтрибут("code");
Результат.Количество = Чтение.ПолучитьАтрибут("quantity");
КонецЕсли;
ИначеЕсли ВТоваре И (Чтение.ТипУзла = ТипУзлаXML.Текст
ИЛИ Чтение.ТипУзла = ТипУзлаXML.СекцияCDATA) Тогда
Результат.Текст = Результат.Текст + Чтение.Значение;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента
И Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Ложь;
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Возврат Результат;
КонецФункцииРазбор по шагам
Создать параметры по умолчанию и отдельные параметры с пятью аргументами в правильном порядке. Свойства параметров только читаются.
Передать параметры в УстановитьСтроку и проверить фактические Запись.Параметры.
Объявление XML записать до корня. Атрибут A&B и текст с < и & передать штатным методам: их экранирование делает ЗаписьXML.
Закрыть возвращает строку. Полностью прочитать её и сравнить код, количество и текст, не полагаясь только на внешний вид.
Как проверить результат
Девять булевых проверок дают Истина.
XML выводится для чтения. Кодировка в объявлении строки — метка; настоящие UTF-8 байты показаны в уроке потока.
Ожидаемый результат
Готовая запись и обратное чтение собственного товара с понятными настройками оформления.
На что обратить внимание
Нельзя присвоить Параметры.Отступ: создайте новый объект параметров.
СимволыОтступа могут содержать только пробельные символы.
Не сравнивайте весь XML побайтно из-за отступов: данные проверяются читателем.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Понять, когда переключение Отступ начинает действовать
Переключаем свойство во время записи и показываем, что текущие параметры не меняются до следующей установки строки.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не тонкий клиент.
Подготовка
В своей учебной базе 8.5.1.1343 создайте серверный общий модуль УчебнаяЗаписьXML. Вставьте полный модуль одного урока и вызовите УчебнаяЗаписьXML.ВыполнитьПример() из собственной серверной команды.
Все тексты и товары заданы константами: Книга, A&B, количество 3. Учётные данные, файлы организации, HTTP и внешние XML не используются.
Первые шесть уроков работают только со строками/потоком в памяти. Последний создаёт один новый временный XML в собственной учебной базе; имя выводится, файл оставляется для ручной проверки.
Для урока файла имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Существующий файл не перезаписывается. После проверки удалите вручную только показанный собственный временный файл.
ПараметрыЗаписиXML неизменяемы после создания. Все пять параметров задаются конструктором, а не присваиванием свойств.
Процедура ВыполнитьПример() Экспорт
Запись = Новый ЗаписьXML;
Запись.Отступ = Ложь;
Запись.УстановитьСтроку();
Сообщить(НЕ Запись.Параметры.Отступ);
Запись.Отступ = Истина;
Сообщить(НЕ Запись.Параметры.Отступ);
Попытка
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A&B");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга <учебник> & пособие");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
КомпактныйXML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Запись.УстановитьСтроку();
Сообщить(Запись.Параметры.Отступ);
Попытка
Запись.ЗаписатьНачалоЭлемента("catalog");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "A&B");
Запись.ЗаписатьАтрибут("quantity", "3");
Запись.ЗаписатьТекст("Книга <учебник> & пособие");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
ФорматированныйXML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Первый = ПрочитатьУчебныйТовар(КомпактныйXML);
Второй = ПрочитатьУчебныйТовар(ФорматированныйXML);
Сообщить(Первый.Код = Второй.Код);
Сообщить(Первый.Текст = Второй.Текст);
Сообщить(КомпактныйXML);
Сообщить(ФорматированныйXML);
КонецПроцедуры
Функция ПрочитатьУчебныйТовар(XML)
Чтение = Новый ЧтениеXML;
Результат = Новый Структура("Корень,Код,Количество,Текст", "", "", "", "");
ВТоваре = Ложь;
Попытка
Чтение.УстановитьСтроку(XML);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ПустаяСтрока(Результат.Корень) Тогда
Результат.Корень = Чтение.ЛокальноеИмя;
КонецЕсли;
Если Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Истина;
Результат.Код = Чтение.ПолучитьАтрибут("code");
Результат.Количество = Чтение.ПолучитьАтрибут("quantity");
КонецЕсли;
ИначеЕсли ВТоваре И (Чтение.ТипУзла = ТипУзлаXML.Текст
ИЛИ Чтение.ТипУзла = ТипУзлаXML.СекцияCDATA) Тогда
Результат.Текст = Результат.Текст + Чтение.Значение;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента
И Чтение.ЛокальноеИмя = "product" Тогда
ВТоваре = Ложь;
КонецЕсли;
КонецЦикла;
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Возврат Результат;
КонецФункцииРазбор по шагам
Отключить Запись.Отступ перед первой установкой строки.
Включить свойство после открытия: текущие Запись.Параметры.Отступ остаются выключенными.
Завершить первую запись и снова вызвать УстановитьСтроку. Теперь новые параметры используют включённый отступ.
Повторить запись того же товара и сравнить значения после чтения: формат отличается, содержимое нет.
Как проверить результат
Пять сравнений дают Истина.
Сравните две выведенные строки: первый документ компактный, второй форматированный.
Ожидаемый результат
Проверяемый пример отложенного применения настройки, частой причины непонятного форматирования.
На что обратить внимание
Свойство Отступ у писателя изменяемо, одноимённое свойство ПараметрыЗаписиXML — нет.
Изменение свойства не переформатирует уже записанные данные.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.