XML DOM - Usuń węzeł
W tym rozdziale zajmiemy się operacją XML DOM Remove Node . Operacja usuwania węzła usuwa określony węzeł z dokumentu. Ta operacja może zostać zaimplementowana w celu usunięcia węzłów, takich jak węzeł tekstowy, węzeł elementu lub węzeł atrybutów.
Poniżej przedstawiono metody używane do usuwania węzłów -
removeChild()
removeAttribute()
removeChild ()
Metoda removeChild () usuwa węzeł potomny wskazany przez oldChild z listy dzieci i zwraca go. Usunięcie węzła podrzędnego jest równoznaczne z usunięciem węzła tekstowego. Dlatego usunięcie węzła potomnego powoduje usunięcie skojarzonego z nim węzła tekstowego.
Składnia
Składnia użycia removeChild () jest następująca -
Node removeChild(Node oldChild) throws DOMException
Gdzie,
oldChild - jest usuwany węzeł.
Ta metoda zwraca usunięty węzeł.
Przykład - Usuń bieżący węzeł
Poniższy przykład (removecurrentnode_example.htm) analizuje dokument XML ( node.xml ) do obiektu XML DOM i usuwa określony węzeł <ContactNo> z węzła nadrzędnego.
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // code for IE5 and IE6 {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/dom/node.xml");
document.write("<b>Before remove operation, total ContactNo elements: </b>");
document.write(xmlDoc.getElementsByTagName("ContactNo").length);
document.write("<br>");
x = xmlDoc.getElementsByTagName("ContactNo")[0];
x.parentNode.removeChild(x);
document.write("<b>After remove operation, total ContactNo elements: </b>");
document.write(xmlDoc.getElementsByTagName("ContactNo").length);
</script>
</body>
</html>
W powyższym przykładzie -
x = xmlDoc.getElementsByTagName ("ContactNo") [0] pobiera element <ContactNo> indeksowany na 0.
x.parentNode.removeChild (x); usuwa element <ContactNo> indeksowany na 0 z węzła nadrzędnego.
Wykonanie
Zapisz ten plik jako removecurrentnode_example.htm na ścieżce serwera (ten plik i node.xml powinny znajdować się w tej samej ścieżce na serwerze). Otrzymujemy następujący wynik -
Before remove operation, total ContactNo elements: 3
After remove operation, total ContactNo elements: 2
Przykład - Usuń węzeł tekstowy
Poniższy przykład (removetextNode_example.htm) analizuje dokument XML ( node.xml ) do obiektu XML DOM i usuwa określony węzeł potomny <FirstName>.
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // code for IE5 and IE6 {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/dom/node.xml");
x = xmlDoc.getElementsByTagName("FirstName")[0];
document.write("<b>Text node of child node before removal is:</b> ");
document.write(x.childNodes.length);
document.write("<br>");
y = x.childNodes[0];
x.removeChild(y);
document.write("<b>Text node of child node after removal is:</b> ");
document.write(x.childNodes.length);
</script>
</body>
</html>
W powyższym przykładzie -
x = xmlDoc.getElementsByTagName ("FirstName") [0]; - pobiera pierwszy element <FirstName> do x indeksowanego na 0.
y = x.childNodes [0]; - w tej linii y zawiera węzeł potomny do usunięcia.
x.removeChild (y); - usuwa określony węzeł podrzędny.
Wykonanie
Zapisz ten plik jako removetextNode_example.htm na ścieżce serwera (ten plik i node.xml powinny znajdować się w tej samej ścieżce na serwerze). Otrzymujemy następujący wynik -
Text node of child node before removal is: 1
Text node of child node after removal is: 0
removeAttribute ()
Metoda removeAttribute () usuwa atrybut elementu według nazwy.
Składnia
Składnia do użycia removeAttribute () jest następująca -
void removeAttribute(java.lang.String name) throws DOMException
Gdzie,
name - to nazwa atrybutu do usunięcia.
Przykład
Poniższy przykład (removeelementattribute_example.htm) analizuje dokument XML ( node.xml ) do obiektu XML DOM i usuwa określony węzeł atrybutu.
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // code for IE5 and IE6 {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/dom/node.xml");
x = xmlDoc.getElementsByTagName('Employee');
document.write(x[1].getAttribute('category'));
document.write("<br>");
x[1].removeAttribute('category');
document.write(x[1].getAttribute('category'));
</script>
</body>
</html>
W powyższym przykładzie -
document.write (x [1] .getAttribute ('category')); - wywoływana jest wartość kategorii atrybutu indeksowana na pierwszej pozycji.
x [1] .removeAttribute ('kategoria'); - usuwa wartość atrybutu.
Wykonanie
Zapisz ten plik jako removeelementattribute_example.htm w ścieżce serwera (ten plik i node.xml powinny znajdować się w tej samej ścieżce na serwerze). Otrzymujemy następujący wynik -
Non-Technical
null