Hallo,
ich habe das
XML Tutorial von Choktay Gründlich gelesen und konnte alles an seinem Beispiel auch wunderbar nachvollziehen.
Nun habe ich hier aber eine
XML-Datei die etwas anderst aufgebaut ist, und egal wie ich es auch drehe und wende bekomme ich diese Datei nicht richtig ausgelsen!
Ich habe zu meinem Problem auch schon hier in der
DP gesucht, doch selbst eine Procedure von Matthias Simmack konnte mein Problem nicht lösen (GetThoseNodes)
Delphi-Quellcode:
//xmlDoc := CoDOMDocument40.Create usw. spare ich mir mal hier zu posten!
//Ich lade die xml Datei 100% richtig, denn es wird ja auch was angezeigt
//nur nicht korreckt!
//Ich schreibe das nur um dies als Fehler schon einmal auszuschließen!
procedure TForm1.GetThoseNodes(
const xmlParent: IXMLDOMNode;
tvParent: TTreeNode);
var
tn : TTreeNode;
i : integer;
s :
string;
begin
// wenn der XML-Parent "nil" ist, dann raus!
if(xmlParent =
nil)
then exit;
// wenn der XML-Parent ein Element ist, dann
// den Namen ermitteln, ...
if(xmlParent.Get_nodeType = NODE_ELEMENT)
then
s := xmlParent.Get_nodeName
// ... ansonsten den Inhalt
else
s := xmlParent.Get_nodeValue;
// ist der TreeView-Parent "nil", dann neuen
// Knoten an oberster Ebene einfügen, ...
if(tvParent =
nil)
then tn := tv.Items.Add(
nil,s)
// ... ansonsten den Parent benutzen und den
// neuen Knoten darunter einfügen
else tn := tv.Items.AddChild(tvParent,s);
// hat der XML-Parent noch untergeordnete Elemente?
if(xmlParent.childNodes.length > 0)
then
// Ja, dann in einer Schleife diese Prozedur
// hier erneut aufrufen, ...
for i := 0
to xmlParent.childNodes.length - 1
do
// ... und dabei das jeweilige Element sowie den
// eben erzeugten TreeView-Knoten als Parents übergeben
GetThoseNodes(xmlParent.childNodes.item[i],tn);
end;
Es werden zwar im TreeView neue knoten mit entsprechenden Bezeichnungen erstellt, jedoch sozusagen ohne Inhalt!
Ich hoffe das mir das jemand erklären kann, anscheinend ist das ganze für einen Anfänger wohl noch etwas heavy...
XML-Code:
<?
xml version="1.0" encoding="iso-8859-1" ?>
- <LISTE>
- <Ordner name="Favoriten" hidden="0" locked="0">
<platz serviceID="0008" name="KLASSIK" onair="0085" />
<platz serviceID="000A" name="HIPHOP" onair="0085" />
<platz serviceID="000B" name="SOUL" onair="0085" />
<platz serviceID="002B" name="GROOVE" onair="0085" />
<platz serviceID="0009" name="MODERN" onair="0085" />
</Ordner>
- <Ordner name="Musik" hidden="0" locked="0">
<platz serviceID="0004" name="MTV Classic" onair="013E" />
<platz serviceID="6FEE" name="MTV HITS" onair="0001" />
<platz serviceID="6FF8" name="MTV HITS." onair="0001" />
<platz serviceID="6FF9" name="MTV Base." onair="0001" />
<platz serviceID="0006" name="MTV 1" onair="013E" />
<platz serviceID="6FF3" name="MTV 2" onair="0001" />
</Ordner>
</LISTE>
Gruß Bit