Конфигурация объекта записи DOM. "discard-default-content" - признак удаления неявных атрибутов (не присутствующих в исходном документе, но добавленных по схеме) (Булево); "xml-declaration" - признак необходимости записывать объявление XML (Булево).
Полное описание, параметры и ограничения
КонфигурацияЗаписиDOM (DOMWriterConfiguration)
КонфигурацияЗаписиDOM (DOMWriterConfiguration)
Доступен, начиная с версии 8.1.
Свойства:
ИменаПараметров (ParameterNames)
Методы:
ВозможноУстановитьПараметр (CanSetParameter)
ПолучитьПараметр (GetParameter)
УстановитьПараметр (SetParameter)
Описание:
Конфигурация объекта записи DOM.
"discard-default-content" - признак удаления неявных атрибутов (не присутствующих в исходном документе, но добавленных по схеме) (Булево);
"xml-declaration" - признак необходимости записывать объявление XML (Булево).
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
См. также:
ЗаписьDOM, свойство КонфигурацияDOM
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Получить XML-строку с объявлением и без него
Управляем параметром xml-declaration объекта ЗаписьDOM. Обе строки передаются в память; наличие encoding в заголовке не доказывает кодировку ещё не существующего файла.
Где и как запускать
Полный текст собственного серверного общего модуля УчебныеЗадачи. Замените его учебное содержимое всем кодом ниже: процедура ВыполнитьПример уже включена, вспомогательная функция размещается после неё, не внутри процедуры.
Подготовка
Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.
Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.
Преобразования выполняются только над собственным XML в памяти. Примеры не читают файлы, внешние DTD, URL или данные информационной базы.
У методов DOM возвращаемый узел сохраняйте в переменную: исходная ссылка и результат операции не всегда обозначают один объект.
Процедура ВыполнитьПример() Экспорт
Документ = Новый ДокументDOM("", "product");
Документ.ЭлементДокумента.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("Книга"));
Сериализатор = Новый ЗаписьDOM;
Настройки = Сериализатор.КонфигурацияDOM;
Имена = Настройки.ИменаПараметров;
Сообщить(Имена.Содержит("xml-declaration"));
Если Не Настройки.ВозможноУстановитьПараметр("xml-declaration", Ложь)
Или Не Настройки.ВозможноУстановитьПараметр("xml-declaration", Истина) Тогда
ВызватьИсключение "Оба режима объявления XML должны поддерживаться";
КонецЕсли;
Прежнее = Настройки.ПолучитьПараметр("xml-declaration");
Попытка
Настройки.УстановитьПараметр("xml-declaration", Ложь);
БезОбъявления = ЗаписатьУчебнуюСтроку(Сериализатор, Документ);
Настройки.УстановитьПараметр("xml-declaration", Истина);
СОбъявлением = ЗаписатьУчебнуюСтроку(Сериализатор, Документ);
Исключение
Настройки.УстановитьПараметр("xml-declaration", Прежнее);
ВызватьИсключение;
КонецПопытки;
Настройки.УстановитьПараметр("xml-declaration", Прежнее);
Сообщить(СтрНайти(БезОбъявления, "<?xml") = 0);
Сообщить(СтрНайти(СОбъявлением, "<?xml") > 0);
Сообщить(СтрНайти(БезОбъявления, "Книга") > 0);
Сообщить(СтрНайти(СОбъявлением, "Книга") > 0);
Сообщить(Настройки.ПолучитьПараметр("xml-declaration") = Прежнее);
Сообщить(БезОбъявления);
Сообщить(СОбъявлением);
КонецПроцедуры
Функция ЗаписатьУчебнуюСтроку(Сериализатор, Документ)
Вывод = Новый ЗаписьXML;
Вывод.УстановитьСтроку();
Попытка
Сериализатор.Записать(Документ, Вывод);
Исключение
Вывод.Закрыть();
ВызватьИсключение;
КонецПопытки;
Возврат Вывод.Закрыть();
КонецФункции
Разбор по шагам
Один документ с текстом Книга сериализуем одним объектом ЗаписьDOM, меняя только xml-declaration.
Перед изменением проверяем имя параметра и возможность обоих значений. Каждая сериализация использует новое собственное ЗаписьXML для записи в строку.
Первый результат не содержит объявления <?xml, второй содержит. Текст товара сохраняется в обоих результатах.
Прежнюю настройку восстанавливаем в обеих ветках завершения. Выводим строки, чтобы заголовок был виден без отладчика.
Как проверить результат
Наличие параметра и пять последующих логических сравнений дают Истина.
Одна строка начинается содержимым product, вторая имеет объявление XML перед ним; обе содержат Книга.
Ожидаемый результат
Получены два варианта сериализации одного XML для разных контрактов обмена.
На что обратить внимание
Не добавляйте объявление вручную поверх результата, если сериализатор уже его записал: два объявления дадут некорректный XML.
Пример создаёт строки, не байты. Кодировка файла или HTTP-тела выбирается на следующем этапе записи/передачи.
Для XML-фрагмента внутри другого документа отдельное объявление обычно не требуется; согласуйте формат с получателем.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.