![]() |
XML Verarbeitung variabel machen
Hey,
ich habe vor einiger Zeit schonmal eine Frage gestellt, wie ich ein XML Dokument auslese. Nun habe ich nochmal eine erweiterte Frage: Mit diesem Code erhalte ich meine notwendigen Daten:
Delphi-Quellcode:
...aber durch die beiden for-Schleifen, bin ich auf folgende Struktur angewiesen:
procedure TForm1.Button1Click(Sender: TObject);
var xml : TXMLDocument; CNode : IXMLNode; CdNode : IXMLNode; PNode : IXMLNode; i,j,k : Integer; begin XML := TXMLDocument.Create(nil); XML.XML.Text := Memo1.Lines.Text; XML.Options := [doNodeAutoCreate,doAutoSave]; XML.Active:=true; for i:=0 to XML.ChildNodes.Count-1 do begin for j:=0 to XML.ChildNodes[i].ChildNodes.Count-1 do begin CdNode:=XML.ChildNodes[i].ChildNodes[j]; if CdNode.NodeName='computerdaten' then begin for k:=0 to CdNode.ChildNodes.Count-1 do begin PNode:=CdNode.ChildNodes[k]; if PNode.NodeName='mainboard' then ShowMessage(PNode.NodeValue); // deine Variable end; end; end; end; end;
XML-Code:
Eine Struktur wie diese hier funktioniert da nicht:
<computer>
<computerdaten> <mainboard>Asus</mainboard> <cpu>Athlon X2 6000+</cpu> <ram>2 GB</ram> <festplatte>160 GB</festplatte> </computerdaten> <computerdaten> <mainboard>MSI</mainboard> <cpu>Intel QuadCore</cpu> <ram>4 GB</ram> <festplatte>500 GB</festplatte> </computerdaten> </computer>
XML-Code:
Wie kann ich meinen Code oben (den mit den for-Schleifen) variabel machen, dass ich auch andere Strukturen auslesen kann? Gibt doch Programme die zeigen das alles z.B. in einer TreeView an...die müssen sowas ja auch können.
<computer>
<computerdaten> <gehaeuse> <mainboard>Asus</mainboard> <cpu>Athlon X2 6000+</cpu> <ram>2 GB</ram> <festplatte>160 GB</festplatte> </gehaeuse> </computerdaten> <computerdaten> <gehaeuse> <mainboard>MSI</mainboard> <cpu>Intel QuadCore</cpu> <ram>4 GB</ram> <festplatte>500 GB</festplatte> </gehaeuse> </computerdaten> </computer> Ich hoffe mir kann jemand helfen. Danke. |
Re: XML Verarbeitung variabel machen
Ganz einfach, du musst das rekursiv programmieren.
Schreib eine Prozedur, die einen TreeNode und ein XMLElement als Parameter entgegennimmt.
Delphi-Quellcode:
PS: es gibt noch andere Möglichkeiten; wenn's noch aktuell ist, dann frag ruhig...
procedure ShowNode(parent:TTreeNode; element:XMLElement1);
var newnode : TTreeNode; begin // pseudocode - soll nur das Prinzip zeigen newnode := parent.AddChildNode(element.Name1); // Schleife über alle Attribute for i:=0 to element.AttributCount-1 do newnode.AddChildNode(element.Attribute[i].Name + '=' + element.Attribute[i].Value); // Schleife über alle Child-Elemente for i:=0 to element.ChildCount-1 do ShowNode(newnode, element.ChildNodes[i]); // der rekursive Aufruf end; |
Re: XML Verarbeitung variabel machen
Ich bringe
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz