Тип: СписокСтрокDOM. Список возможных параметров конфигурации DOM.
Полное описание, параметры и ограничения
КонфигурацияПостроителяDOM.ИменаПараметров (DOMBuilderConfiguration.ParameterNames)
КонфигурацияПостроителяDOM (DOMBuilderConfiguration)
ИменаПараметров (ParameterNames)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: СписокСтрокDOM.
Список возможных параметров конфигурации DOM.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Запретить DTD при разборе собственной XML-строки
Проверяем положительный вход без DOCTYPE и отрицательный с локальным пустым объявлением. disallow-doctype — настройка построителя, а не поиск подстроки в произвольном XML.
Где и как запускать
Полный текст собственного серверного общего модуля УчебныеЗадачи. Замените его учебное содержимое всем кодом ниже: процедура ВыполнитьПример уже включена, вспомогательная функция размещается после неё, не внутри процедуры.
Подготовка
Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.
Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.
Преобразования выполняются только над собственным XML в памяти. Примеры не читают файлы, внешние DTD, URL или данные информационной базы.
У методов DOM возвращаемый узел сохраняйте в переменную: исходная ссылка и результат операции не всегда обозначают один объект.
Процедура ВыполнитьПример() Экспорт
Построитель = Новый ПостроительDOM;
Настройки = Построитель.КонфигурацияDOM;
Имена = Настройки.ИменаПараметров;
Сообщить(Имена.Содержит("disallow-doctype"));
Для Индекс = 0 По Имена.Количество() - 1 Цикл
Сообщить("Параметр построителя: " + Имена.Элемент(Индекс));
КонецЦикла;
Если Не Настройки.ВозможноУстановитьПараметр("disallow-doctype", Истина) Тогда
ВызватьИсключение "Нельзя включить запрет DTD: разбор не выполняется";
КонецЕсли;
Прежнее = Настройки.ПолучитьПараметр("disallow-doctype");
Настройки.УстановитьПараметр("disallow-doctype", Истина);
Попытка
Документ = ПрочитатьУчебнуюСтроку(Построитель, "<products><product>Книга</product></products>");
Сообщить(Документ.ЭлементДокумента.ИмяЭлемента = "products");
Сообщить(Документ.ЭлементДокумента.ПервыйДочерний.ТекстовоеСодержимое = "Книга");
ОтклонёнDTD = Ложь;
Попытка
СDTD = ПрочитатьУчебнуюСтроку(Построитель, "<!DOCTYPE products><products/>");
Исключение
ОтклонёнDTD = Истина;
Сообщить("Ожидаемый отказ для DOCTYPE: " + ОписаниеОшибки());
КонецПопытки;
Если Не ОтклонёнDTD Тогда
ВызватьИсключение "Отрицательная проверка не пройдена: DOCTYPE был принят";
КонецЕсли;
Сообщить(ОтклонёнDTD);
Исключение
Настройки.УстановитьПараметр("disallow-doctype", Прежнее);
ВызватьИсключение;
КонецПопытки;
Настройки.УстановитьПараметр("disallow-doctype", Прежнее);
Сообщить(Настройки.ПолучитьПараметр("disallow-doctype") = Прежнее);
КонецПроцедуры
Функция ПрочитатьУчебнуюСтроку(Построитель, ТекстXML)
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXML);
Попытка
Результат = Построитель.Прочитать(Чтение);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Возврат Результат;
КонецФункции
Разбор по шагам
Получаем настройки конкретного ПостроительDOM. ИменаПараметров — СписокСтрокDOM, не обычный Массив: используются Содержит, Количество, Элемент.
Перед изменением проверяем возможность установки, сохраняем прежнее значение и включаем disallow-doctype. Если включение невозможно, пример прекращает разбор.
Вспомогательная функция создаёт и закрывает собственное ЧтениеXML. Положительная строка даёт products с текстом Книга.
Отрицательная строка содержит только собственный DOCTYPE без SYSTEM/PUBLIC и сущностей. Ожидается исключение; факт отказа проверяется вне внутреннего блока Попытка, чтобы не поймать собственную контрольную ошибку.
Прежняя настройка восстанавливается при завершении и при ошибке; это не отменяет уже построенный положительный документ.
Как проверить результат
Проверки наличия disallow-doctype, корня, текста, отказа и восстановления дают Истина.
Сообщение ожидаемого отказа отображает фактическую ошибку платформы; конкретную формулировку не сравниваем.
Ни одна строка не содержит адреса внешнего DTD или файловой ссылки.
Ожидаемый результат
Отработана защитная настройка разбора XML с положительным и отрицательным учебным входом.
На что обратить внимание
Это не полный набор ограничений обработки недоверенного XML: отдельно нужны ограничения размера, времени, схемы и допустимых полей.
Не выключайте запрет для внешнего пользовательского XML ради успешного чтения. Для легитимного DTD требуется отдельная политика безопасных источников.
ПолучитьПараметр с неизвестным именем может вызвать исключение; сначала используйте список имён и проверку возможности установки.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.