Удаление узла элемента, удаление себя (текущего узла), как удалить или очистить текстовый узел, а также способы удаления атрибутивных узлов – по имени и по объекту

Рубрика: DOM - Объектная Модель Документа

Доброго времени суток, уважаемые читатели блога okITgo.ru! В предыдущих постах рубрики XML DOM я рассказывал о способах получения значений узлов и атрибутов, а также о методах изменения узлов. В этот раз опишу различные способы удаления узлов и атрибутов из XML документа, таких как метод removeChild(), который удаляет указанный узел, метод removeAttribute(), удаляющий указанный атрибут, и других.


Попробуйте Сами – Примеры

В примерах ниже испольуется XML файл books.xml.
Функция loadXMLDoc(), описанная во внешнем скрипте JavaScript, используется для загрузки XML файла.

Удаление узла элемента
Этот пример использует removeChild() для удаления первого элемента <book>.

Удаление текущего узла элемента
Данный пример использует parentNode и removeChild() для удаления текущего элемента <book>.

Удаление следующего узла
Этот пример использует removeChild() для удаления следующего узла за первым элементом <title>.

Очистить текст в текстовом узле
Данный пример использует свойство nodeValue() для очистки текстового узла первого элемента <title>.

Удаление атрибута по имени
Этот пример применяет removeAttribute() для удаления атрибута "category" из первого элемента <book>.

Удаление атрибутов по объекту
Данный пример использует removeAttributeNode() для удаления всех атрибутов из всех элементов <book>.


Удаление Узла Элемента

Метод removeChild() удаляет указанный узел.

Когда узел удаляется, все его дочерние узлы также удаляются.

Следующий фрагмент кода удалит первый элемент <book> из загруженного xml:

Пример

xmlDoc=loadXMLDoc("books.xml");

y=xmlDoc.getElementsByTagName("book")[0];

xmlDoc.documentElement.removeChild(y);

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc, используя loadXMLDoc()
  2. Устанавливаем переменную y, инициализируя ее узлом, который необходимо удалить
  3. Удаляем узел элемента посредством метода removeChild(), вызывая его из родительского узла

Удаление Себя – Удаление Текущего Узла

Метод removeChild() является единственным способом удалить указанный узел.

Когда Вы перемещаетесь к узлу, который хотите удалить, можно удалить этот узел, используя свойство parentNode и метод removeChild():

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book")[0];

x.parentNode.removeChild(x);

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc с помощью loadXMLDoc()
  2. Присваиваем переменной y узел элемента, который необходимо удалить
  3. Удаляем узел элемента, используя свойство parentNode и метод removeChild()

Удаление Текстового Узла

Метод removeChild() также может использоваться для удаления текстового узла:

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0];

y=x.childNodes[0];
x.removeChild(y);

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc посредством loadXMLDoc()
  2. Инициализируем переменную x, чтобы она содержала узел элемента
  3. Устанавливаем переменную y в значение текстового узла, который надо удалить
  4. Удаляем текстовый узел, используя метод removeChild(), вызванный из родительского узла

Метод removeChild() редко используют просто для удаления текста из узла. Обычно для этого применяют свойство nodeValue (смотрите ниже).


Очистка Текстового Узла

Свойство nodeValue может использоваться для изменения или для очистки значения текстового узла:

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="";

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc, используя loadXMLDoc()
  2. Устанавливает переменную x в значение текстового узла первого элемента заголовка (title)
  3. Используем свойство nodeValue для очистки текста из текстового узла

Циклический обход и изменение текстового узла всех элементов <title>: Попробуйте сами


Удаление Атрибутивного Узла по Имени

Метод removeAttribute(имя) используется для удаления атрибутивного узла по его имени.

Пример: removeAttribute(‘category’)

Следующий фрагмент кода удаляет атрибут "category" в первом элементе <book>:

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc с помощью loadXMLDoc()
  2. Используем getElementsByTagName() для получения узлов книг (book)
  3. Удаляем атрибут "category" из первого узла элемента книги

Циклический обход и удаление атрибута "category" у всех элементов <book>: Попробуйте сами


Удаление Атрибутивных Узлов по Объекту

Метод removeAttributeNode(узел) используется для удаления узла атрибута, применяя в качестве параметра объект узла.

Пример: removeAttributeNode(x)

Следующий фрагмент кода удаляет все атрибуты из всех элементов <book>:

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book");

for (i=0;i<x.length;i++)
{
while (x[i].attributes.length>0)
  {
  attnode=x[i].attributes[0];
  old_att=x[i].removeAttributeNode(attnode);
  }
}

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc посредством loadXMLDoc()
  2. Используем getElementsByTagName() для получения всех узлов книг
  3. Для каждого элемента книги проверяем, есть ли у него хоть один атрибут
  4. Пока в элементе книги имеются атрибуты, удаляем атрибут

В следующий раз в данной рубрике, посвященной объектной модели документа DOM, мы рассмотрим еще одну группу способов модификации узлов XML документа – а именно, о методах замены узлов. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.

Ваш отзыв