Zum Hauptinhalt springen

Beispiel - Durchsuchen einer XML-Struktur

Beispiel - Durchsuchen einer XML-Struktur Alle Knoten einer Baum-Struktur durchlaufen

In diesem Beispiel wird ein Algorithmus zum Durchlaufen einer Baumstruktur aus CteNode -Objekten vorgestellt. Mit der Funktion können alle Knoten eines gelesenen XML-Dokuments ermittelt werden.

Die Funktion wird rekursiv aufgerufen und startet mit dem Wurzelknoten des Baumes.

sub XmlRead
(
aXmlNode : handle;
)

local
{
tValueAlpha : alpha(4096); // Inhalt des Knotens
tXmlNode : handle;
}

{
// Auswertung des übergebenen Knotens
if (aXmlNode->spType = _TypeAlpha)
{
tValueAlpha # aXmlNode->spValueAlpha;
}

...

// Attribute des Knotens
if (aXmlNode->spAttribCount > 0)
{
for tXmlNode # aXmlNode->CteRead(_CteAttribTree | _CteFirst);
loop tXmlNode # aXmlNode->CteRead(_CteAttribTree | _CteNext, tXmlNode);
while (tXmlNode != 0)
{
tXmlNode->XmlRead();
}
}

// Untergeordnete Objekte des Knotens
if (aXmlNode->spChildCount > 0)
{
for tXmlNode # aXmlNode->CteRead(_CteChildList | _CteFirst);
loop tXmlNode # aXmlNode->CteRead(_CteChildList | _CteNext, tXmlNode);
while (tXmlNode != 0)
{
tXmlNode->XmlRead();
}
}
}

Die Funktion kann nach dem Einlesen eines XML-Dokuments zur Anzeige in einem TreeView -Objekt aufgerufen werden.

main

local
{
tErr : int;
tXmlDoc : handle;
}

{
// Wurzel-Knoten erzeugen
tXmlDoc # CteOpen(_CteNode);
// XML-Dokument lesen
tErr # tXmlDoc->XmlLoad(_Sys->spPathTemp + '\citylist.xml');

tXmlDoc->XmlRead();

// Struktur aus dem Speicher entfernen
tXmlDoc->CteClear(true);
tXmlDoc->CteClose();
}