XML DOM Usuń węzły
Metoda removeChild() usuwa określony węzeł.
Metoda removeAttribute() usuwa określony atrybut.
Spróbuj sam - przykłady
W przykładach użyto pliku XML books.xml .
W tym przykładzie zastosowano removeChild() do usunięcia pierwszego elementu <book>.
W tym przykładzie zastosowano parentNode i removeChild() do usunięcia bieżącego elementu <book>.
W tym przykładzie zastosowano removeChild() do usunięcia węzła tekstowego z pierwszego elementu <title>.
W tym przykładzie użyto właściwości nodeValue() do wyczyszczenia węzła tekstowego pierwszego elementu <title>.
W tym przykładzie zastosowano removeAttribute() do usunięcia atrybutu „category” z pierwszego elementu <book>.
W tym przykładzie zastosowano removeAttributeNode() do usunięcia wszystkich atrybutów ze wszystkich elementów <book>.
Usuń węzeł elementu
Metoda removeChild() usuwa określony węzeł.
Gdy węzeł zostanie usunięty, wszystkie jego węzły podrzędne również zostaną usunięte.
Ten kod usunie pierwszy element <book> z załadowanego pliku xml:
Przykład
y = xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
Wyjaśnienie przykładu:
- Załóżmy, że plik " books.xml " jest załadowany do xmlDoc
- Ustaw zmienną y jako węzeł elementu do usunięcia
- Usuń węzeł elementu za pomocą metody removeChild() z węzła nadrzędnego
Usuń siebie — usuń bieżący węzeł
Metoda removeChild() to jedyny sposób na usunięcie określonego węzła.
Po przejściu do węzła, który chcesz usunąć, możliwe jest usunięcie tego węzła za pomocą właściwości parentNode i metody removeChild():
Przykład
x = xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);
Wyjaśnienie przykładu:
- Załóżmy, że plik " books.xml " jest załadowany do xmlDoc
- Ustaw zmienną y jako węzeł elementu do usunięcia
- Usuń węzeł elementu za pomocą właściwości parentNode i metody removeChild()
Usuń węzeł tekstowy
Metoda removeChild() może być również użyta do usunięcia węzła tekstowego:
Przykład
x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];
x.removeChild(y);
Wyjaśnienie przykładu:
- Załóżmy, że plik " books.xml " jest załadowany do xmlDoc
- Ustaw zmienną x jako pierwszy węzeł elementu tytułu
- Ustaw zmienną y jako węzeł tekstowy do usunięcia
- Usuń węzeł elementu za pomocą metody removeChild() z węzła nadrzędnego
Nie jest bardzo powszechne użycie removeChild() tylko do usunięcia tekstu z węzła. Zamiast tego można użyć właściwości nodeValue. Zobacz następny akapit.
Wyczyść węzeł tekstowy
Właściwość nodeValue może służyć do zmiany wartości węzła tekstowego:
Przykład
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";
Wyjaśnienie przykładu:
- Załóżmy, że plik " books.xml " jest załadowany do xmlDoc
- Pobierz pierwszy węzeł podrzędny pierwszego elementu tytułu.
- Użyj właściwości nodeValue, aby usunąć tekst z węzła tekstowego
Usuń węzeł atrybutu według nazwy
Metoda removeAttribute( ) usuwa węzeł atrybutu według jego nazwy.
Przykład: removeAttribute('kategoria')
Ten kod usuwa atrybut „category” z pierwszego elementu <book>:
Przykład
x = xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");
Wyjaśnienie przykładu:
- Załóżmy, że plik " books.xml " jest załadowany do xmlDoc
- Użyj getElementsByTagName(), aby uzyskać węzły książki
- Usuń atrybut „kategoria” z pierwszego węzła elementu książki
Przejdź w pętlę i usuń atrybut „category” wszystkich elementów <book>:
Usuń węzły atrybutów według obiektu
Metoda removeAttributeNode( ) usuwa węzeł atrybutu, używając obiektu węzła jako parametru.
Przykład: removeAttributeNode(x)
Ten kod usuwa wszystkie atrybuty wszystkich elementów <book>:
Przykład
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);
}
}
Wyjaśnienie przykładu:
- Załóżmy, że plik " books.xml " jest załadowany do xmlDoc
- Użyj getElementsByTagName(), aby uzyskać wszystkie węzły książki
- Dla każdego elementu księgi sprawdź, czy są jakieś atrybuty
- Chociaż w elemencie książki znajdują się atrybuty, usuń atrybut