Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML in Treeview einlesen mit OmniXML (https://www.delphipraxis.net/41425-xml-treeview-einlesen-mit-omnixml.html)

Salomon 3. Mär 2005 07:54


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:
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;
Die XML Datei ist wie folgt aufgebaut:
XML-Code:
<?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>
Wie gesagt, unter MSXML 4 lief es ohne Probleme.

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

Delphi_Fanatic 3. Mär 2005 08:38

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" . :???:

Salomon 3. Mär 2005 09:07

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 :(

Salomon 3. Mär 2005 10:42

Re: XML in Treeview einlesen mit OmniXML
 
Delphi-Quellcode:
  Nodes := xmlDoc.SelectNodes('/programme/Firewalls');
  showmessage (inttostr(nodes.Length));
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?

Kedariodakon 3. Mär 2005 10:44

Re: XML in Treeview einlesen mit OmniXML
 
Zitat:

Zitat von Salomon
Morgen zusammen,
ich habe mein Programm auf OmniXML umgestellt um nicht von einer MSXML Installation abhängig zu sein.

Naja ob du nun von MS oder einem anderem abhängig bist :gruebel:

test doch mal Open XML :zwinker:



Bye

Salomon 3. Mär 2005 11:21

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.

Salomon 3. Mär 2005 13:59

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 07:51 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