Usunięcie węzłów XML DOM
- Poprzednia strona Zmiana węzła DOM
- Następna strona Zastąpienie węzła 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
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()
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
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
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
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
- Poprzednia strona Zmiana węzła DOM
- Następna strona Zastąpienie węzła DOM