Knoten einfügen

Um als nächstes einen Knoten hinzuzufügen muss die Position, an die er gesetzt werden soll erst gefunden werden. Da bisher nur das Wurzelelement (TUD) existiert suchen wir also mit dem Befehl (genauer gesagt: der Methode - dazu später mehr) getElementsByTagName nach dem Wurzelelement. Der Aufruf sieht dann wie folgt aus: findNode = docNode.getElementsByTagName('TUD');

In der Variable findNode befinden sich nun alle Knoten mit dem Namen TUD. In unserem Fall enthält sie also nur ein Element. Darauf können wir mit der Methode item zugreifen. Der Aufruf

foundNode = findNode.item(0)

Speichert den Knoten des ersten Vorkommens von TUD in der Variable foundNode.
Nun, da wir den gewünschten Knoten, in unsererm Fall das Wurzelelement, gefunden haben möchten wir an dieser Stelle ein Unterelement hinzufügen. Dazu dient die Methode createElement des Dokuments. Zur Erinnerung: Das gesamte Dokument liegt in der Variable docNode. Daher können wir ein Unterelement mit dem Aufruf

nodeChild = docNode.createElement('Mitarbeiter')

erstellen. Möchten wir zusäztlich noch Attribute hinzufügen nutzen wir die Methode setAttribute des Unterelements. Also:

nodeChild.setAttribute('nr','0001')

Da wir den erzeugten Knoten an die vorher gesuchte Position setzen wollen hängen wir ihn nun an die gesuchte Stelle an:

foundNode.appendChild(nodeChild)

Um ein weiteres Unterelement zu erstellen (diesmal ein Unterelement von Mitarbeiter) gehen wir analog vor. Wir suchen jedoch nicht mehr nach dem Wurzelelement, sondern nach dem Unterelement Mitarbeiter.

findNode = docNode.getElementsByTagName('Mitarbeiter');
foundNode = findNode.item(0);
nodeChild = docNode.createElement('Name');
nodeChild.setTextContent('Sheldon Cooper');
foundNode.appendChild(nodeChild);

Hier wurde außerdem mit der Methode setTextContent ein Text zwischen die Tags <Name>...</Name> geschrieben.

Analog gestaltet sich das Anlegen weiterer Knoten, hier die Befehle in der Übersicht. Der einzige Unterschied besteht im Auffinden der Knoten mittels item(): Da wir zuerst das Wurzelelement suchen und nur ein Wurzelement existiert rufen wir item(0) auf (Es wird bei 0 begonnen zu zählen!). Anschließend wollen wir jedoch einen zweiten Mitarbeiter anlegen. Daher rufen wir bei dieser Iteration item(1) auf.

findNode = docNode.getElementsByTagName('TUD');
foundNode = findNode.item(0);
nodeChild = docNode.createElement('Mitarbeiter');
nodeChild.setAttribute('nr', '0002')
foundNode.appendChild(nodeChild);

findNode = docNode.getElementsByTagName('Mitarbeiter');
foundNode = findNode.item(1); % UNTERSCHIED: jetzt 1 statt 0
nodeChild = docNode.createElement('Name');
nodeChild.setTextContent('Leonard Hofstadter');
foundNode.appendChild(nodeChild);

findNode = docNode.getElementsByTagName('Mitarbeiter');
foundNode = findNode.item(1); % UNTERSCHIED: jetzt 1 statt 0
nodeChild = docNode.createElement('Titel');
nodeChild.setTextContent('Dr.');
foundNode.appendChild(nodeChild);

Falls Sie nicht immer die oben gezeigten Funktionen eingeben möchten, um mit diesem Tutorial fortzufahren, können Sie auch eine .m-Datei herunterladen, die die oben gezeigten Funktionen enthält. So müssen Sie nicht immer alle Befehle kopieren oder abtippen um mit dem Tutorial fortzufahren. Zum besseren Verständnis sollten Sie jedoch beim ersten Lesen die Befehle nacheinander ausführen und erst wenn Sie die Abläufe verstanden haben auf die fertige .m-Datei nutzen.