Синтаксис и применение ЧтениеXML.По умолчанию в платформе 1С:Предприятие. Описание и примеры кода.
Синтаксис
Новый ЧтениеXMLПолное описание, параметры и ограничения
ЧтениеXML.По умолчанию
ЧтениеXML (XMLReader)
По умолчанию
Синтаксис:
Новый ЧтениеXML
Методическая информация
Практические примеры
DTD: удалить и установить собственную сущность
Сущность и нотация берутся из настоящего внутреннего DTD собственной строки. Никакие узлы не создаются фиктивными конструкторами.
Где и как запускать
Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.
Подготовка
Чтение типа документа включено явно: шестой параметр ПараметрыЧтенияXML равен Ложь.
В 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");
Сообщить("Удалён: " + Удалённый.ИмяУзла);
Исключение
Сообщить("Коллекция отказала в удалении");
КонецПопытки;
Попытка
Коллекция.УстановитьИменованныйЭлемент(Узел);
Сообщить("Вызов установки своего удержанного узла выполнен");
Исключение
Сообщить("Коллекция отказала в установке");
КонецПопытки;
Сообщить("Элементов после вызовов: " + Строка(Коллекция.Количество()));Разбор по шагам
Разберите свою строку с внутренним DTD и получите объявленный узел по имени.
Отдельно вызовите удаление, сохраняя ранее полученный настоящий узел.
Попробуйте установить этот же узел и покажите фактическое число элементов.
Как проверить результат
Если DTD или узел не получены, пример не должен подменять их пустой коллекцией.
Успех или отказ каждого вызова проверяется отдельно; сообщения отказа не являются успешным изменением.
Ожидаемый результат
Приведён короткий пример синтаксиса с указанными ограничениями. Он не выполнялся здесь в 1С; проверьте реальные результаты в своём учебном контексте.
На что обратить внимание
DTD-коллекция может не разрешать изменение. Наличие методов в описании не гарантирует изменяемость результата разбора.
Два вызова не составляют транзакцию: если удаление прошло, а установка отказала, пример не обещает восстановления.
В описании установки сущности встречается слово «нотация»; фактический обязательный параметр имеет тип СущностьDOM.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
DTD: удалить и установить собственную нотацию
Сущность и нотация берутся из настоящего внутреннего DTD собственной строки. Никакие узлы не создаются фиктивными конструкторами.
Где и как запускать
Синтаксический пример в серверном обработчике или толстом клиенте. Дерево создаётся из собственной строки либо собственным конструктором в памяти. Здесь 1С, браузер, файлы и сеть не запускались.
Подготовка
Чтение типа документа включено явно: шестой параметр ПараметрыЧтенияXML равен Ложь.
В 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");
Сообщить("Удалён: " + Удалённый.ИмяУзла);
Исключение
Сообщить("Коллекция отказала в удалении");
КонецПопытки;
Попытка
Коллекция.УстановитьИменованныйЭлемент(Узел);
Сообщить("Вызов установки своего удержанного узла выполнен");
Исключение
Сообщить("Коллекция отказала в установке");
КонецПопытки;
Сообщить("Элементов после вызовов: " + Строка(Коллекция.Количество()));Разбор по шагам
Разберите свою строку с внутренним DTD и получите объявленный узел по имени.
Отдельно вызовите удаление, сохраняя ранее полученный настоящий узел.
Попробуйте установить этот же узел и покажите фактическое число элементов.
Как проверить результат
Если DTD или узел не получены, пример не должен подменять их пустой коллекцией.
Успех или отказ каждого вызова проверяется отдельно; сообщения отказа не являются успешным изменением.
Ожидаемый результат
Приведён короткий пример синтаксиса с указанными ограничениями. Он не выполнялся здесь в 1С; проверьте реальные результаты в своём учебном контексте.
На что обратить внимание
DTD-коллекция может не разрешать изменение. Наличие методов в описании не гарантирует изменяемость результата разбора.
Два вызова не составляют транзакцию: если удаление прошло, а установка отказала, пример не обещает восстановления.
В описании установки сущности встречается слово «нотация»; фактический обязательный параметр имеет тип СущностьDOM.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.