КонфигурацияПостроителяDOM.ИменаПараметров

Свойства · ParameterNames

Тип: СписокСтрокDOM. Список возможных параметров конфигурации DOM.

Полное описание, параметры и ограничения

КонфигурацияПостроителяDOM.ИменаПараметров (DOMBuilderConfiguration.ParameterNames)

КонфигурацияПостроителяDOM (DOMBuilderConfiguration)

ИменаПараметров (ParameterNames)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: СписокСтрокDOM.
Список возможных параметров конфигурации DOM.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Запретить DTD при разборе собственной XML-строки

Проверяем положительный вход без DOCTYPE и отрицательный с локальным пустым объявлением. disallow-doctype — настройка построителя, а не поиск подстроки в произвольном XML.

Где и как запускать

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

Подготовка

  1. Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.

  2. Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.

  3. Преобразования выполняются только над собственным XML в памяти. Примеры не читают файлы, внешние DTD, URL или данные информационной базы.

  4. У методов 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);
    Попытка
        Результат = Построитель.Прочитать(Чтение);
    Исключение
        Чтение.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
    Чтение.Закрыть();
    Возврат Результат;
КонецФункции

Разбор по шагам

  1. Получаем настройки конкретного ПостроительDOM. ИменаПараметров — СписокСтрокDOM, не обычный Массив: используются Содержит, Количество, Элемент.

  2. Перед изменением проверяем возможность установки, сохраняем прежнее значение и включаем disallow-doctype. Если включение невозможно, пример прекращает разбор.

  3. Вспомогательная функция создаёт и закрывает собственное ЧтениеXML. Положительная строка даёт products с текстом Книга.

  4. Отрицательная строка содержит только собственный DOCTYPE без SYSTEM/PUBLIC и сущностей. Ожидается исключение; факт отказа проверяется вне внутреннего блока Попытка, чтобы не поймать собственную контрольную ошибку.

  5. Прежняя настройка восстанавливается при завершении и при ошибке; это не отменяет уже построенный положительный документ.

Как проверить результат

  1. Проверки наличия disallow-doctype, корня, текста, отказа и восстановления дают Истина.

  2. Сообщение ожидаемого отказа отображает фактическую ошибку платформы; конкретную формулировку не сравниваем.

  3. Ни одна строка не содержит адреса внешнего DTD или файловой ссылки.

Ожидаемый результат

Отработана защитная настройка разбора XML с положительным и отрицательным учебным входом.

На что обратить внимание

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

  2. Не выключайте запрет для внешнего пользовательского XML ради успешного чтения. Для легитимного DTD требуется отдельная политика безопасных источников.

  3. ПолучитьПараметр с неизвестным именем может вызвать исключение; сначала используйте список имён и проверку возможности установки.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.