![]() |
XMLDocument auslesen
Also eins gleich vorweg... XML is völliges Neuland für mich und die Frage wahrscheinlich leicht zu beantworten... im Forum hab ich aber nix gefunden. Im folgenden mal die Struktur einer einfachen XML-Datei:
Delphi-Quellcode:
- <array>
<curLength>0</curLength> - <struct> <index>1</index> - <array> <name>NADROUTSCELVL</name> <curLength>0</curLength> - <array> <index>1</index> <curLength>0</curLength> - <encoded> <style>be</style> <size>4</size> <data>1234567890000000000000010000000000000001000000000000</data> </encoded> </array> - <array> <index>2</index> <curLength>0</curLength> - <encoded> <style>be</style> <size>4</size> <data>9876543210000000000000010000000000000001000000000000</data> </encoded> </array> </array> </struct> </array> Auf die Inhalte kann man bekanntlich über
Delphi-Quellcode:
zugreifen
XMLDocument.DocumentElement.ChildNodes['NAME'].Text
Der Ausdruck
Delphi-Quellcode:
schreibt den String "1" in die ListBox. Das entspricht dem Index des ersten Arrays. Wenn ich aber ein weiteres "Array" (wie oben mit dem Index 2) habe, wie komme ich dann an dessen Index? Schließlich sind die Namen identisch.
ListBox1.Items.Add(XMLDocument1.DocumentElement.ChildNodes['struct'].ChildNodes['array'].ChildNodes['array'].ChildNodes['index'].Text);
|
Re: XMLDocument auslesen
Hallo,
wenn du kein identifizierendes Merkmal für den Einzelzugriff hast oder - wie in deinem Fall - generell eine Knotenmenge verarbeiten willst, dann kannst du so vorgehen:
Delphi-Quellcode:
Dabei enthält xmlDoc (TXMLDocument) deine Beispieldatei.
procedure TDemoForm.ButtonClick(Sender: TObject);
var dl: IDOMNodeList; dn: IDOMNodeEx; xPath: string; i: Integer; begin with XMLDoc.DOMDocument as IDOMNodeSelect do begin xPath := '/array/struct/array/array/index'; dl := selectNodes(xPath); for i := 0 to Pred(dl.length) do begin dn := dl.item[i] as IDOMNodeEx; ShowMessage(String(dn.Text)); end; end; end; Grüße vom marabu |
Re: XMLDocument auslesen
Hallo!
Scheint zu funktionieren, wenn auch etwas umständlich. Danke Marabu! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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