XML DOM刪除節點
在本章中,我們將學習XML DOM刪除節點的操作。刪除節點操作是指從文檔中刪除指定的節點。實現此操作以移除諸如文本節點,元素節點或屬性節點之類的節點。
以下是用於刪除節點操作的方法 -
-
removeChild()
方法 -
removeAttribute()
方法
1. removeChild()方法
removeChild()
方法從子列表中刪除oldChild
指示的子節點,並將其返回。 刪除子節點等同於刪除文本節點。 因此,刪除子節點會刪除與其關聯的文本節點。
語法
使用removeChild()
方法的語法如下 -
Node removeChild(Node oldChild) throws DOMException
其中,
-
oldChild
- 是要刪除的節點。 - 此方法返回已刪除的節點。
示例1 - 刪除當前節點
以下示例(remove_curtnode.html)將XML文檔(node.xml)解析爲XML DOM對象,並從父節點中刪除指定的節點<ContactNo>
。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<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("/node.xml");
document.write("<b>在刪除操作之前,總共有ContactNo元素: </b>");
document.write(xmlDoc.getElementsByTagName("ContactNo").length);
document.write("<br>");
x = xmlDoc.getElementsByTagName("ContactNo")[0];
x.parentNode.removeChild(x);
document.write("<b>在刪除操作之後,總共有ContactNo元素: </b>");
document.write(xmlDoc.getElementsByTagName("ContactNo").length);
</script>
</body>
</html>
在上面的例子中 -
-
x = xmlDoc.getElementsByTagName("ContactNo")[0]
獲取索引爲0
的元素<ContactNo>
。 -
x.parentNode.removeChild(x);
從父節點中刪除索引爲0
的元素<ContactNo>
。
執行上面示例代碼,得到以下結果 -
示例2 - 刪除文本節點
以下示例(removetextnode.html)將XML文檔(node.xml)解析爲XML DOM對象,並刪除指定的子節點<FirstName>
。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<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("/node.xml");
x = xmlDoc.getElementsByTagName("FirstName")[0];
document.write("<b>刪除前子節點的文本節點數量是:</b> ");
document.write(x.childNodes.length);
document.write("<br>");
y = x.childNodes[0];
x.removeChild(y);
document.write("<b>刪除後子節點的文本節點數量是:</b> ");
document.write(x.childNodes.length);
</script>
</body>
</html>
在上面的例子中 -
x = xmlDoc.getElementsByTagName("FirstName")[0];
- 獲取第一個元素<FirstName>
到索引爲0
保存到變量x
。y = x.childNodes [0];
- 在這一行中,變量y
保存要刪除的子節點。x.removeChild(y);
- 刪除指定的子節點。
執行上面示例代碼,得到以下結果 -
2. removeAttribute()方法
removeAttribute()
方法按名稱刪除元素的屬性。
語法
使用removeAttribute()
的語法如下 -
void removeAttribute(java.lang.String name) throws DOMException
其中,
-
name
- 要刪除的屬性的名稱。
示例
以下示例(remove_elementattribute.html)將XML文檔(node.xml)解析爲XML DOM對象,並刪除指定的屬性節點。
<!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("/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>
在上面示例代碼中 −
-
document.write(x[1].getAttribute('category'));
− 調用在第一個位置索引的category
屬性的值。 -
x[1].removeAttribute('category');
− 刪除屬性的值。
執行上面示例代碼,得到以下結果 -