Knoten auslesen

 

Logischerweise geben wir uns mit dem Suchen und Finden eines speziellen Knotens nicht zufrieden, schließlich wollen wir auch die Informationen daraus auslesen. Dazu dient die Methode getTextContent.

Der Aufruf gestaltet sich einfach. Falls noch nicht geschehen suchen wir den gewünschten Knoten, z.B. mit

findNode = docNode.getElementsByTagName('Mitarbeiter');
foundNode = findNode.item(0);

Anschließend können wir den Inhalt ausgeben:

foundNode.getTextContent

gibt

ans =
Sheldon CooperDr. Dr.

aus. Das ist natürlich nicht zufriedenstellend, da hier einfach alle Textinhalte aus den Tags Name und Titel aneinandergereiht wurden. Wir erinnern uns an den vorherigen Abschnitt und lesen einfach die einzelnen Unterelemente gezielt aus:

childNodes = foundNode.getChildNodes;
childNodes.item(0).getTextContent

Gibt in diesem Fall den Textinhalt des Tags Name aus.

Achtung: Dabei handelt es sich nicht um einen "normalen" String. Möchten wir diese Ausgabe als "normalen" String erhalten müssen wir die MATLAB-Funktion char() benutzen.

childNodes = foundNode.getChildNodes;
xmlString = childNodes.item(0).getTextContent
normalerString = char(xmlString)

Dabei sieht die Ausgabe zwar genauso aus, der Dateityp ist jedoch ein anderer.

Jetzt wird es schwierig. Da wir uns die Arbeit erleichtern wollen und im Kapitel Grundlagen aufgepasst haben, können wir Schleifen und Cell-Arrays nutzen, um den Inhalt sauber geordnet auszugeben:

% Erste Schleife geht die einzelnen -Tags durch
for jj = 1:findNode.getLength
 foundNode = findNode.item(jj-1);
 childNodes = foundNode.getChildNodes

 % Zweite Schleife geht die Felder und durch
 for ii = 0:childNodes.getLength-1
   textContent{1, ii+1} = char(childNodes.item(ii).getNodeName);
   textContent{jj+1, ii+1} = char(childNodes.item(ii).getTextContent); 
  end
end