Обойти DOM с отбором ОтображатьИнструкциюОбработки

Учебные задачи

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

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Используйте серверную процедуру учебной обработки. Код без директив вставьте в её тело; отдельные реквизиты конфигурации не нужны.

  2. Все XML, DOM и JSON этого урока создаются из собственных строк в памяти. Не открывайте полученный HTML в браузере и не подставляйте рабочие файлы.

Док = Новый ДокументDOM("", "товары");
Товар = Док.СоздатьЭлемент("товар");
Док.ЭлементДокумента.ДобавитьДочерний(Товар);
Товар.УстановитьАтрибут("код", "1");
Товар.ДобавитьДочерний(Док.СоздатьТекстовыйУзел("Книга"));
Товар.ДобавитьДочерний(Док.СоздатьСекциюCDATA(" + справочник"));
Товар.ДобавитьДочерний(Док.СоздатьКомментарий("проверка"));
Инструкция = Док.СоздатьИнструкциюОбработки("learn", "demo");
Док.ВставитьПеред(Инструкция, Док.ЭлементДокумента);
Корень = Док;
Фильтр = Новый ФильтрУзловDOM(, , , , , , , ПараметрыОтбораУзловDOM.ОтображатьИнструкциюОбработки);
Итератор = Док.СоздатьИтераторУзлов(Корень, Фильтр);
Количество = 0;
Узел = Итератор.СледующийУзел();
Пока Узел <> Неопределено Цикл
    Количество = Количество + 1;
    Сообщить(Узел.ИмяУзла);
    Узел = Итератор.СледующийУзел();
КонецЦикла;
Сообщить("Найдено: " + Строка(Количество));

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

  1. Дерево явно создаётся из элементов, текста, CDATA, комментария и инструкции обработки; параметры XML-парсера на его состав не влияют.

  2. Аргумент перечисления поставлен на соответствующую позицию конструктора; пропущенные параметры не добавляют другие виды узлов.

  3. Итератор начинается перед выбранным корнем; каждое получение следующего узла меняет его позицию.

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

  1. Последняя строка: Найдено: 1.

  2. Пустой результат для сущности, нотации, ссылки на сущность или DTD ожидаем: в учебном XML их нет. Это реальный отбор, не создание таких узлов.

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

Обойдены только узлы выбранного вида.

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

  1. Атрибут не является дочерним узлом элемента; для его демонстрации выбран отдельный корень-атрибут.

  2. Фрагмент документа создаётся отдельно; по умолчанию он не находится внутри исходного документа.

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

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

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

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

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