![]() |
XML in Treeview einlesen mit OmniXML
Morgen zusammen,
ich habe mein Programm auf OmniXML umgestellt um nicht von einer MSXML Installation abhängig zu sein. Hat soweit auch alles geklappt, bis auf das meine XML Datei nicht mehr in eine TreeView eingelesen wird. Das Eintragen eines Programmes in die XMl Datei funktioniert einwandfrei... Der Code zum Auslesen und Importieren der XML Datei in die Treeview läßt sich ohne Fehlermeldung problemlos Kompilieren. Hier mal der Code:
Delphi-Quellcode:
Die XML Datei ist wie folgt aufgebaut:
Var Node : IXMLNode;
Nodes : IXMLNodeList; TVParentNode : TTreeNode; TVChildNode : TTreeNode; i : integer; begin // Firewalls in Treeview aufnehmen TVParentNode := TV.Items.Add(nil,'Firewalls'); TVParentNode.ImageIndex := 0; Nodes := xmlDoc.SelectNodes('/programme/Firewalls'); for i := 0 to Nodes.length - 1 do begin Node := Nodes.item[i].selectSingleNode('Name'); // Nodes.item[i].text (Gesammter Text von einer Firewall Node) TVChildNode := TV.Items.AddChild(TVParentNode, Node.text); TVChildNode.ImageIndex := 0; end;
XML-Code:
Wie gesagt, unter MSXML 4 lief es ohne Probleme.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<programme> <WLan> <Name>Super Testprogramm</Name> <Webseite>http://www.pc-adviser.de</Webseite> <Autor></Autor> <Version>1.0</Version> <Grafik></Grafik> <Typ>Freeware</Typ> <Beschreibung /> </WLan> <Firewalls> <Name>ErsterWin2K Eintrag</Name> <Webseite>http://www</Webseite> <Autor /> <Version /> <Typ>Freeware</Typ> <Sprache>Deutsch</Sprache> <Grafik>Tools\ErsterWin2K Eintrag\ErsterWin2K Eintrag.jpg</Grafik> <ProgPfad>Tools\ErsterWin2K Eintrag\</ProgPfad> <DateiGroesse>0</DateiGroesse> <Beschreibung>Eintragen geht!</Beschreibung> </Firewalls> </programme> Folgendes soll der Code tun: In der XML Datei gibt der obere Node wie z.B "WLan" oder "Firewalls" die Kategorie des Programms an. Nun soll das Programm alle Programme einer Kategorie in der Treeview unter einer "Node" zusammenfassen. Zurzeit trage ich die Programmkategorie von Hand in die Treeview und lese dann die dazu gehörenden Programm aus. Habt ihr eine Idee wie ich das ganze am besten auch noch dynamsich gestalte? Vorangig sollte es aber erstmal wieder unter OmniXML laufen... Thanx Salomon |
Re: XML in Treeview einlesen mit OmniXML
Ich habe ganz genau das mal vor ca. 1 1/2 Jahren gemacht : Eine Delphi-Routine, die eine XML-Datei einliesst und in
einer TreeView darstellt. Ich würde mir an Deiner Stelle keine Gedanken über omnni..oder sonst was machen ... schreib' Dir einfach eine eigene Routine zum Analysieren / Einlesen von XML-Dateien und dann bist Du immer auf der "sonnigen Seite" . :???: |
Re: XML in Treeview einlesen mit OmniXML
Du meinst eine eigene Routine zum Einlesen der XML Datei?
Das ist mir zu aufwendig, mit Omni XML sollte das schon schnell und einfach gehen. Hab nur keine Ahnung warum der nichts mehr einliest :( |
Re: XML in Treeview einlesen mit OmniXML
Delphi-Quellcode:
Das auswählen der Nodes als Liste klappt nicht, da die Liste immer die Länge 0 hat. Gibt es da eine Möglichkeit dies auch anders zu realisieren?
Nodes := xmlDoc.SelectNodes('/programme/Firewalls');
showmessage (inttostr(nodes.Length)); |
Re: XML in Treeview einlesen mit OmniXML
Zitat:
test doch mal ![]() Bye |
Re: XML in Treeview einlesen mit OmniXML
Das ist so nicht ganz richtig. Bei OmniXML ist alles was benötigt wird mit in der EXE Datei enthalten. Habe ich auf meinem neu installiertem WinXP ausprobiert.
|
Re: XML in Treeview einlesen mit OmniXML
So, funktioniert endlich. Und zwar musste der Pfad etwas abgeändert werden:
Delphi-Quellcode:
// Nodes := xmlDoc.SelectNodes('/programme/Firewalls'); // MS XML Syntax
Nodes := XMLDoc.DocumentElement.SelectNodes('Firewalls'); // Omni XML Syntax |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 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