Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TTreeView mit XML-Datei verknüpfen, aber wie? (https://www.delphipraxis.net/152486-ttreeview-mit-xml-datei-verknuepfen-aber-wie.html)

Marco Steinebach 24. Jun 2010 09:00

TTreeView mit XML-Datei verknüpfen, aber wie?
 
Hallo zusammen,
Ich habe eine Liste, mit in diesem Falle Radiosendern, die in einer XML-Datei gespeichert sind. Diese möchte ich in einem TreeView darstellen. Soweit, so klar.
In der XML-Datei sind zu jedem Sender mehrere Attribute gespeichert, also sein Name, sein Live-Stream, der Ort aus dem er kommt, usw.
Im TTreeView soll aber nur der Sendername angezeigt werden.
Und ab hier steh ich ein bißchen auf dem Schlauch:
Wie kann ich einen Bezug schaffen zwischen dem ausgewählten TTreeview-Element und dem dazugehörigen Knoten meiner XML-Struktur?
Das Problem ist, es ist nicht möglich anhand des Sendernamens einen Knoten in der XML-Struktur zu finden, denn "Rundfunk Berlin-Brandenburg" ist nunmal kein gültiger XML-Name, ;-).
Zum Einsatz kommt OpenXML.
Wenn jemand 'ne andere Idee hat, wie ich Baum-Daten sinnvoll speichern kann, meinetwegen auch ohne XML, auch dafür bin ich offen.
Schonmal vielen Dank für euere Antworten
Marco

himitsu 24. Jun 2010 09:18

AW: TTreeView mit XML-Datei verknüpfen, aber wie?
 
Du kannst über XPath auch den Knoten suchen, welcher ein Attribut, mit einem bestimmten Inhalt enthält.

Oder du nutzt die Node.Data des Treeview und legst darin gleich alle zugehörigen Daten ab, z.B. als Objekt.
Dann brauchst du keine Verknüpfung zur XML-Datei.

Marco Steinebach 24. Jun 2010 09:34

AW: TTreeView mit XML-Datei verknüpfen, aber wie?
 
Hallo Himitsu,
Vielen Dank für die rasche Antwort.
Also wäre die zweite Möglichkeit, wenn ich dich richtig verstanden habe, vom Ablauf etwa die folgende:
- Lies die XML-Datei ein
- Baum erstellen - dabei alle Daten, die Sinn machen, aus dem XML-Dokument auslesen, in einen record speichern und einen Zeiger darauf im Node.Data ablegen.
- ... Programmlauf, änderungen etc ...
- und dann das ganze wieder Rückwärts, also aus den Records wieder das XML-Generieren und speichern?
Klingt logisch, aber ist die XPath-Geschichte nicht einfacher, dann hab ich nicht alles doppelt?
Hättest du mir ein Beispeil, ich steige durch das Handbuch zu OpenXML nur schwierig durch...
Einen freundlichen Gruß
Marco

himitsu 24. Jun 2010 10:27

AW: TTreeView mit XML-Datei verknüpfen, aber wie?
 
Code:
<sender name="sendername" ... />
diese Codes sollten das Obrige finden (hoff ich mal)
Delphi-Quellcode:
Node := NodeList.GetSingleNode('*[@name="' + SenderName + '"]');

Node := NodeList.GetSingleNode('sender[@name="' + SenderName + '"]');
entspricht übrigens dem //kap[@title='Nettes Kapitel']/pa-Beispiel auf Wikipedia


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz