Удаляет узел из списка дочерних узлов.
Синтаксис
УдалитьДочерний(<Узел>)Полное описание, параметры и ограничения
ЭлементDOM.УдалитьДочерний (DOMElement.RemoveChild)
ЭлементDOM (DOMElement)
УдалитьДочерний (RemoveChild)
Доступен, начиная с версии 8.1.
Синтаксис:
УдалитьДочерний(<Узел>)
Параметры:
<Узел> (обязательный)
Тип: АтрибутDOM, ДокументDOM, ЭлементDOM, ОпределениеТипаДокументаDOM, НотацияDOM, СущностьDOM, ФрагментДокументаDOM, ТекстDOM, КомментарийDOM, СекцияCDATADOM, ИнструкцияОбработкиDOM, СсылкаНаСущностьDOM, ПространствоИменXPath.
Удаляемый узел DOM.
Возвращаемое значение:
Тип: АтрибутDOM, ДокументDOM, ЭлементDOM, ОпределениеТипаДокументаDOM, НотацияDOM, СущностьDOM, ФрагментДокументаDOM, ТекстDOM, КомментарийDOM, СекцияCDATADOM, ИнструкцияОбработкиDOM, СсылкаНаСущностьDOM, ПространствоИменXPath.
Удаляемый узел.
Описание:
Удаляет узел из списка дочерних узлов.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Исключение вызывается в случаях:
если данный узел в режиме Только для чтения;
если удаляемый узел не найден;
если удаляемый узел является дочерним узлом узла Документ, исключение генерируется в случае, если реализация не поддерживает удаление узлов ОпределениеТипаДокумента и Элемент.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Вставить, заменить и удалить товар в DOM
Изменяем порядок дочерних узлов и различаем копию узла и тот же самый узел. Пользовательские данные служат локальной пометкой, не XML-атрибутом.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Выполняйте на сервере. Текст названия записывается непосредственно в product для компактности учебного документа.
Вставляемые и заменяемые узлы созданы одним документом; перенос между документами требует ИмпортироватьУзел.
Документ = Новый ДокументDOM("", "products");
Корень = Документ.ЭлементДокумента;
Первый = Документ.СоздатьЭлемент("product");
Первый.УстановитьАтрибут("code", "A-01");
Первый.ТекстовоеСодержимое = "Книга";
Корень.ДобавитьДочерний(Первый);
Последний = Документ.СоздатьЭлемент("product");
Последний.ТекстовоеСодержимое = "Ручка";
Корень.ДобавитьДочерний(Последний);
Вставленный = Документ.СоздатьЭлемент("product");
Вставленный.ТекстовоеСодержимое = "Тетрадь";
Корень.ВставитьПеред(Вставленный, Последний);
Копия = Первый.КлонироватьУзел(Истина);
Сообщить(Первый.УзелРавен(Копия));
Сообщить(Первый.УзелИдентичен(Копия));
Копия.ТекстовоеСодержимое = "Новая книга";
Удалённый = Корень.ЗаменитьДочерний(Копия, Первый);
Сообщить(Удалённый.РодительскийУзел = Неопределено);
Корень.УдалитьДочерний(Последний);
Вставленный.УстановитьПользовательскиеДанные("Проверено", Истина);
Сообщить(Вставленный.ПолучитьПользовательскиеДанные("Проверено"));
Сообщить(Корень.ПервыйДочерний.ТекстовоеСодержимое);
Сообщить(Корень.ПоследнийДочерний.ТекстовоеСодержимое);
Сообщить(Копия.СледующийСоседний.УзелИдентичен(Вставленный));
Сообщить(Вставленный.ПредыдущийСоседний.УзелИдентичен(Копия));
Сообщить(Вставленный.ДокументВладелец = Документ);
Узлы = Корень.ДочерниеУзлы;
Сообщить(Узлы.Количество());
Для Номер = 0 По Узлы.Количество() - 1 Цикл
Узел = Узлы.Элемент(Номер);
Сообщить(Узел.ИмяУзла + ": " + Узел.ТекстовоеСодержимое);
КонецЦикла;Разбор по шагам
Добавляем книгу и ручку, вставляем тетрадь перед ручкой.
Глубокая копия книги имеет одинаковое содержимое, но является другим узлом.
ЗаменитьДочерний возвращает удалённый старый узел; затем отдельно удаляем ручку.
Проверяем связи соседей и обходим оставшийся СписокУзловDOM по индексам.
Как проверить результат
Перед изменением копии УзелРавен даёт Истина, УзелИдентичен — Ложь.
После изменений остаются 2 узла: Новая книга, Тетрадь; у удалённой книги нет родителя.
Проверки соседей, владельца и пользовательской пометки дают Истина.
Ожидаемый результат
Дерево изменено осмысленно, различие между равенством содержимого и идентичностью узла показано явно.
На что обратить внимание
Список дочерних узлов отражает изменения дерева: при удалении во время обхода индексы смещаются.
УстановитьПользовательскиеДанные не создаёт атрибут и не является способом сохранить пометку в XML-файле.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.