XML DOM 刪除節點
removeChild()
方法刪除指定的節點。
removeAttribute()
方法刪除指定的屬性。
刪除元素節點
removeChild()
方法刪除指定的節點。
當一個節點被刪除時,它的所有子節點也會被刪除。
這段代碼將從已加載的 xml 中刪除第一個 <book> 元素:
實例
y = xmlDoc.getElementsByTagName("book")[0]; xmlDoc.documentElement.removeChild(y);
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 將變量
y
設置為要刪除的元素節點 - 使用
removeChild()
方法從父節點中刪除該元素節點
刪除自己 - 刪除當前節點
removeChild()
方法是唯一可以刪除指定節點的方法。
當您導航到要刪除的節點時,可以使用 parentNode
屬性和 removeChild()
方法來刪除該節點:
實例
x = xmlDoc.getElementsByTagName("book")[0]; x.parentNode.removeChild(x);
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 將變量
y
設置為要刪除的元素節點 - 使用
parentNode
屬性和removeChild()
方法來刪除元素節點
刪除文本節點
removeChild()
方法也可用于刪除文本節點:
實例
x = xmlDoc.getElementsByTagName("title")[0]; y = x.childNodes[0]; x.removeChild(y);
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 將變量
x
設置為第一個 title 元素節點 - 將變量
y
設置為要刪除的文本節點 - 使用
removeChild()
方法從父節點中刪除該節點
僅使用 removeChild()
從節點中刪除文本的情況并不常見。可以使用 nodeValue 屬性來代替。請參閱下一段。
清空文本節點
nodeValue
屬性可用于改變或清空文本節點的值:
實例
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 獲取第一個 title 元素的第一個子節點
- 使用
nodeValue
屬性來清除文本節點中的文本
根據名稱刪除屬性節點
removeAttribute()
方法用于根據名稱刪除屬性節點。
例子 1
下面的代碼刪除第一個 <book> 元素中的 "category" 屬性:
x = xmlDoc.getElementsByTagName("book"); x[0].removeAttribute("category");
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 使用
getElementsByTagName()
來獲取 book 節點 - 從第一個 book 元素節點中刪除 "category" 屬性
例子 2
循環并刪除所有 <book> 元素的 "category" 屬性:
for (i = 0; i < xLen; i++) { y = x.item(i); y.removeAttribute('category'); }
根據對象刪除屬性節點
removeAttributeNode()
方法通過使用 Node 對象作為參數,來刪除屬性節點。
下面的代碼刪除所有 <book> 元素的所有屬性:
實例
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); } }
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 使用
getElementsByTagName()
來獲取所有 book 節點 - 檢查每個 book 元素是否有屬性
- 如果在某個 book 元素中存在屬性,則刪除該屬性