ЧтениеXML.По умолчанию

Конструкторы

Синтаксис и применение ЧтениеXML.По умолчанию в платформе 1С:Предприятие. Описание и примеры кода.

Синтаксис

Новый ЧтениеXML
Полное описание, параметры и ограничения

ЧтениеXML.По умолчанию

ЧтениеXML (XMLReader)

По умолчанию

Синтаксис:
Новый ЧтениеXML
Методическая информация

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

DTD: удалить и установить собственную сущность

Сущность и нотация берутся из настоящего внутреннего DTD собственной строки. Никакие узлы не создаются фиктивными конструкторами.

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

Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.

Подготовка

  1. Чтение типа документа включено явно: шестой параметр ПараметрыЧтенияXML равен Ложь.

  2. В DTD есть собственная внутренняя сущность icon со значением BOOK и нотация png с публичным идентификатором study-png. Внешнего DTD, внешних сущностей, системных адресов и загрузок нет.

Параметры = Новый ПараметрыЧтенияXML(, , , , , Ложь);
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку("<!DOCTYPE order [<!NOTATION png PUBLIC ""study-png""><!ENTITY icon ""BOOK"">]><order>BOOK</order>", Параметры);
Построитель = Новый ПостроительDOM;
Построитель.КонфигурацияDOM.УстановитьПараметр("disallow-doctype", Ложь);
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();
Коллекция = Документ.ОпределениеТипаДокумента.Сущности;
Узел = Коллекция.ПолучитьИменованныйЭлемент("icon");
Если Узел = Неопределено Тогда
    ВызватьИсключение "Собственное объявление DTD не получено";
КонецЕсли;
Попытка
    Удалённый = Коллекция.УдалитьИменованныйЭлемент("icon");
    Сообщить("Удалён: " + Удалённый.ИмяУзла);
Исключение
    Сообщить("Коллекция отказала в удалении");
КонецПопытки;
Попытка
    Коллекция.УстановитьИменованныйЭлемент(Узел);
    Сообщить("Вызов установки своего удержанного узла выполнен");
Исключение
    Сообщить("Коллекция отказала в установке");
КонецПопытки;
Сообщить("Элементов после вызовов: " + Строка(Коллекция.Количество()));

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

  1. Разберите свою строку с внутренним DTD и получите объявленный узел по имени.

  2. Отдельно вызовите удаление, сохраняя ранее полученный настоящий узел.

  3. Попробуйте установить этот же узел и покажите фактическое число элементов.

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

  1. Если DTD или узел не получены, пример не должен подменять их пустой коллекцией.

  2. Успех или отказ каждого вызова проверяется отдельно; сообщения отказа не являются успешным изменением.

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

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

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

  1. DTD-коллекция может не разрешать изменение. Наличие методов в описании не гарантирует изменяемость результата разбора.

  2. Два вызова не составляют транзакцию: если удаление прошло, а установка отказала, пример не обещает восстановления.

  3. В описании установки сущности встречается слово «нотация»; фактический обязательный параметр имеет тип СущностьDOM.

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

DTD: удалить и установить собственную нотацию

Сущность и нотация берутся из настоящего внутреннего DTD собственной строки. Никакие узлы не создаются фиктивными конструкторами.

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

Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.

Подготовка

  1. Чтение типа документа включено явно: шестой параметр ПараметрыЧтенияXML равен Ложь.

  2. В DTD есть собственная внутренняя сущность icon со значением BOOK и нотация png с публичным идентификатором study-png. Внешнего DTD, внешних сущностей, системных адресов и загрузок нет.

Параметры = Новый ПараметрыЧтенияXML(, , , , , Ложь);
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку("<!DOCTYPE order [<!NOTATION png PUBLIC ""study-png""><!ENTITY icon ""BOOK"">]><order>BOOK</order>", Параметры);
Построитель = Новый ПостроительDOM;
Построитель.КонфигурацияDOM.УстановитьПараметр("disallow-doctype", Ложь);
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();
Коллекция = Документ.ОпределениеТипаДокумента.Нотации;
Узел = Коллекция.ПолучитьИменованныйЭлемент("png");
Если Узел = Неопределено Тогда
    ВызватьИсключение "Собственное объявление DTD не получено";
КонецЕсли;
Попытка
    Удалённый = Коллекция.УдалитьИменованныйЭлемент("png");
    Сообщить("Удалён: " + Удалённый.ИмяУзла);
Исключение
    Сообщить("Коллекция отказала в удалении");
КонецПопытки;
Попытка
    Коллекция.УстановитьИменованныйЭлемент(Узел);
    Сообщить("Вызов установки своего удержанного узла выполнен");
Исключение
    Сообщить("Коллекция отказала в установке");
КонецПопытки;
Сообщить("Элементов после вызовов: " + Строка(Коллекция.Количество()));

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

  1. Разберите свою строку с внутренним DTD и получите объявленный узел по имени.

  2. Отдельно вызовите удаление, сохраняя ранее полученный настоящий узел.

  3. Попробуйте установить этот же узел и покажите фактическое число элементов.

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

  1. Если DTD или узел не получены, пример не должен подменять их пустой коллекцией.

  2. Успех или отказ каждого вызова проверяется отдельно; сообщения отказа не являются успешным изменением.

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

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

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

  1. DTD-коллекция может не разрешать изменение. Наличие методов в описании не гарантирует изменяемость результата разбора.

  2. Два вызова не составляют транзакцию: если удаление прошло, а установка отказала, пример не обещает восстановления.

  3. В описании установки сущности встречается слово «нотация»; фактический обязательный параметр имеет тип СущностьDOM.

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

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

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

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

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