Usunięcie węzłów XML DOM

Metoda removeChild() usuwa określony węzeł.

Metoda removeAttribute() usuwa określony atrybut.

Przykład

Poniższy przykład używa pliku XML books.xml.

Funkcja loadXMLDoc()zlokalizowany w JavaScriptie zewnętrznym, używany do ładowania plików XML.

Usuwanie węzła elementu
W tym przykładzie użyto removeChild() do usunięcia pierwszego elementu <book>.
Usuwanie bieżącego węzła elementu
W tym przykładzie użyto parentNode i removeChild() do usunięcia bieżącego elementu <book>.
Usuwanie węzła tekstowego
W tym przykładzie użyto removeChild() do usunięcia węzła tekstowego pierwszego elementu <title>.
Wyczyścienie tekstu węzła tekstowego
W tym przykładzie użyto właściwości nodeValue() do wyczyścienia tekstu węzła pierwszego elementu <title>.
Usuwanie atrybutów na podstawie nazwy
W tym przykładzie użyto removeAttribute() do usunięcia atrybutu "category" z pierwszego elementu <book>.
Usuwanie atrybutów na podstawie obiektu
W tym przykładzie użyto removeAttributeNode() do usunięcia wszystkich atrybutów elementu <book>.

Usuwanie węzła elementu

Metoda removeChild() usuwa określony węzeł.

Gdy węzeł zostanie usunięty, wszystkie jego podwęzły również zostaną usunięte.

Poniższy fragment kodu usunie pierwszy element <book> z załadowanego xml:

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

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Ustaw zmienną y na element węzła do usunięcia
  • Usunięcie węzła elementu za pomocą metody removeChild() z węzła nadrzędnego

TIY

Usunięcie samego siebie - usunięcie bieżącego węzła

Metoda removeChild() jest jedynym sposobem na usunięcie określonego węzła.

Gdy już zlokalizujesz węzeł do usunięcia, możesz go usunąć za pomocą atrybutu parentNode i metody removeChild():

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

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Ustaw zmienną y na element węzła do usunięcia
  • Usunięcie tego elementu węzła za pomocą atrybutu parentNode i metody removeChild()

TIY

Usuwanie węzła tekstowego

Metoda removeChild() można użyć do usunięcia węzła tekstowego:

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

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Ustaw zmienną x na węzeł pierwszego elementu title
  • Ustaw zmienną y na węzeł tekstowy do usunięcia
  • Usunięcie węzła za pomocą metody removeChild() z węzła nadrzędnego

TIY

Niekoniecznie używany removeChild() do usuwania tekstu z węzła. Można go zastąpić atrybutem nodeValue. Zobacz następny akapit.

Czyszczenie węzła tekstowego

Atrybut nodeValue można użyć do zmiany lub czyszczenia wartości węzła tekstowego:

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

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Ustaw zmienną x na węzeł tekstowy pierwszego elementu title
  • Używaj atrybutu nodeValue do czyszczenia tekstu węzła tekstowego

TIY

Petla i zmiana wszystkich węzłów tekstowych elementów <title>: TIY

Usuwanie węzłów atrybutów na podstawie nazwy

Metoda removeAttribute(name) służy do usuwania węzłów atrybutów na podstawie nazwy.

Przykład: removeAttribute('category')

Poniższy fragment kodu usuwa atrybut "category" z pierwszego elementu <book>:

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

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Używaj getElementsByTagName() do uzyskania węzła book
  • Usuń atrybut "category" z węzła elementu book pierwszego

TIY

Przejdź przez wszystkie elementy <book> i usuń atrybut "category": TIY.

Usuwanie węzłów atrybutów na podstawie obiektu

Metoda removeAttributeNode(node) usuwa węzeł atrybutu za pomocą obiektu Node jako parametru.

Przykład: removeAttributeNode(x)

Poniższy fragment kodu usuwa wszystkie atrybuty wszystkich elementów <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);
  }
}

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Użyj getElementsByTagName() aby uzyskać wszystkie węzły book
  • Sprawdź, czy każdy element book ma atrybut
  • Jeśli w elemencie book istnieje atrybut, usunąć ten atrybut

TIY