XML DOM-Knotenlöschen

removeChild() 方法删除指定节点。

removeAttribute() 方法删除指定属性。

实例

下面的例子使用 XML 文件 books.xml

函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。

删除元素节点
本例使用 removeChild() 来删除第一个 <book> 元素。
删除当前元素节点
本例使用 parentNode 和 removeChild() 来删除当前的 <book> 元素。
Textknoten löschen
本例使用 removeChild() 来删除第一个 <title> 元素的文本节点。
清空文本节点的文本
本例使用 nodeValue() 属性来清空第一个 <title> 元素的文本节点。
根据名称删除属性
本例使用 removeAttribute() 从第一个 <book> 元素中删除 "category" 属性。
根据对象删除属性
本例使用 removeAttributeNode() 删除 <book> 元素中的所有属性。

删除元素节点

removeChild() 方法删除指定的节点。

当一个节点被删除时,其所有子节点也会被删除。

下面的代码片段将从载入的 xml 中删除第一个 <book> 元素:

xmlDoc=loadXMLDoc("books.xml");
y=xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y); 

Beispiel

  • Durch die Nutzung loadXMLDoc() "books.xml"Lade xmlDoc"
  • Setzen Sie die Variable y auf das zu löschende Elementknoten
  • Durch Verwendung der Methode removeChild() können Elementknoten aus dem Elternknoten entfernt werden

TIY

Selbst löschen - Löschen des aktuellen Knotens

Die Methode removeChild() ist das einzige Verfahren, um einen bestimmten Knoten zu löschen.

Wenn Sie den zu löschenden Knoten bereits lokalisiert haben, können Sie ihn löschen, indem Sie das Attribut parentNode und die Methode removeChild() verwenden

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x); 

Beispiel

  • Durch die Nutzung loadXMLDoc() "books.xml"Lade xmlDoc"
  • Setzen Sie die Variable y auf das zu löschende Elementknoten
  • Durch Verwendung des Attributs parentNode und der Methode removeChild() kann dieses Elementknoten gelöscht werden

TIY

Textknoten löschen

Die Methode removeChild() kann verwendet werden, um Textknoten zu löschen:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
x.removeChild(y); 

Beispiel

  • Durch die Nutzung loadXMLDoc() "books.xml"Lade xmlDoc"
  • Setzen Sie die Variable x auf den Knoten des ersten title-Elements
  • Setzen Sie die Variable y auf den zu löschenden Textknoten
  • Durch Verwendung der Methode removeChild() können Knoten aus dem Elternknoten entfernt werden

TIY

Nicht oft verwendet: removeChild() zum Entfernen von Textknoten aus einem Knoten. Es kann das Attribut nodeValue verwendet werden, um es zu ersetzen. Siehe das nächste Kapitel.

Leeren des Textknotens

Das Attribut nodeValue kann verwendet werden, um den Wert des Textknotens zu ändern oder zu leeren:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue=""; 

Beispiel

  • Durch die Nutzung loadXMLDoc() "books.xml"Lade xmlDoc"
  • Setzen Sie die Variable x auf den Textknoten des ersten title-Elements
  • Verwenden Sie das Attribut nodeValue, um den Text des Textknotens zu leeren

TIY

Schleife und Änderung des Textknotens aller <title>-Elemente: TIY

Attribute-Nodes basierend auf dem Namen löschen

Die Methode removeAttribute(name) wird verwendet, um Attribute-Nodes basierend auf dem Namen zu löschen.

Beispiel: removeAttribute('category')

Der folgende Codeabschnitt löscht die "category"-Eigenschaft des ersten <book>-Elements:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category"); 

Beispiel

  • Durch die Nutzung loadXMLDoc() "books.xml"Lade xmlDoc"
  • Verwenden Sie getElementsByTagName() um den book-Knoten zu erhalten
  • Entferne das "category"-Attribut aus dem ersten book-Elementknoten

TIY

Durchsuche und entferne alle "category"-Attribute der <book>-Elemente: TIY.

Lösche Attributknoten basierend auf dem Objekt

Die Methode removeAttributeNode(node) verwendet ein Node-Objekt als Parameter, um Attributknoten zu löschen.

Beispiel: removeAttributeNode(x)

Der folgende Codeabschnitt entfernt alle Attribute aller <book>-Elemente:

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);
  }
}

Beispiel

  • Durch die Nutzung loadXMLDoc() "books.xml"Lade xmlDoc"
  • Verwende getElementsByTagName() um alle book-Knoten zu erhalten
  • Überprüfe, ob jeder book-Element ein Attribut hat
  • Entferne das Attribut, wenn es im book-Element existiert

TIY