Удаление элемента XML DOM

Метод 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); 

Пример объяснения:

  • Используя loadXMLDoc() Ввести "books.xml"Загрузить в xmlDoc"
  • Переменная y установлена в элементный узел, который нужно удалить
  • Удаление элементного узла из родительского узла с помощью метода removeChild():

TIY

Удаление自身 - удаление текущего узла

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

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

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x); 

Пример объяснения:

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

TIY

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

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

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
x.removeChild(y); 

Пример объяснения:

  • Используя loadXMLDoc() Ввести "books.xml"Загрузить в xmlDoc"
  • Переменная x установлена в узел первого элемента title
  • Переменная y установлена в текстовый узел, который нужно удалить
  • Удаление узла из родительского узла с помощью метода removeChild()

TIY

Не слишком часто используется метод removeChild() для удаления текста из узла. Вместо него можно использовать атрибут nodeValue. См. следующий абзац.

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

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

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

Пример объяснения:

  • Используя loadXMLDoc() Ввести "books.xml"Загрузить в xmlDoc"
  • Переменная x установлена в текстовый узел первого элемента title
  • Использование атрибута nodeValue для очистки текста текстового узла

TIY

Циклическое изменение текстовых узлов всех элементов <title>: TIY

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

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

Пример: removeAttribute('category')

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

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

Пример объяснения:

  • Используя loadXMLDoc() Ввести "books.xml"Загрузить в xmlDoc"
  • Использование функции getElementsByTagName() для получения узла book
  • Удалить атрибут "category" из первого узла элемента book

TIY

Пройдите и удалите все атрибуты "category" всех элементов <book>: TIY.

Удаление узла атрибута по объекту

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

Пример: 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);
  }
}

Пример объяснения:

  • Используя loadXMLDoc() Ввести "books.xml"Загрузить в xmlDoc"
  • Используйте getElementsByTagName() для получения всех узлов book
  • Проверьте, имеют ли все элементы book атрибут
  • Если в элементе book есть атрибут, удалить этот атрибут

TIY