AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML Verzeichnisstruktur in TreeView - wie?
Thema durchsuchen
Ansicht
Themen-Optionen

XML Verzeichnisstruktur in TreeView - wie?

Ein Thema von s-off · begonnen am 15. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
s-off
(Gast)

n/a Beiträge
 
#1

XML Verzeichnisstruktur in TreeView - wie?

  Alt 15. Mai 2006, 15:09
Hallo zusammen,

ich verzweifle langsam aber sicher. Ich musste mich bisher noch nie mit XML-Dateien auseinander setzen, aber jetzt ist es leider soweit - und dann auch noch soetwas kompliziertes. Habe sowohl hier in der DP gesucht, als auch über Google, als auch im XPath Tutorial auf www.zvon.org, als auch im XML-Tutorial von chakotay..... aber ich bekomme es net gebacken

Also, ich habe eine Datei, die die Verzeichnisstruktur einer Festplatte wiederspiegelt. Das Ganze sieht in etwa so aus:

XML-Code:
<?xml version='1.0' encoding='UTF-8'?>
<document>
   <ordner>
      <name>Ordner1</name>
         <datei>
            <name>Datei1</name>
            <groesse>Groesse1</groesse>
            <attribut>Attribut1</attribut>
         </datei>
         <ordner>
            <name>Ordner2</name>
               <datei>
                  <name>Datei2</name>
                  <groesse>Groesse2</groesse>
                  <attribut>Attribut2</attribut>
               </datei>
               <datei>
                  <name>Datei3</name>
                  <groesse>Groesse3</groesse>
                  <attribut>Attribut3</attribut>
               </datei>
               <datei>
                  <name>Datei4</name>
                  <groesse>Groesse4</groesse>
                  <attribut>Attribut4</attribut>
               </datei>
               <ordner>
                  <name>Ordner3</name>
                     <datei>
                        <name>Datei2</name>
                        <groesse>Groesse2</groesse>
                        <attribut>Attribut2</attribut>
                     </datei>
                     <datei>
                        <name>Datei3</name>
                        <groesse>Groesse3</groesse>
                        <attribut>Attribut3</attribut>
                     </datei>
                     <datei>
                        <name>Datei4</name>
                        <groesse>Groesse4</groesse>
                        <attribut>Attribut4</attribut>
                     </datei>
               </ordner>
         </ordner>
   </ordner>
</document>

Man sieht also, dass es in Ordnern, wieder Unterordner geben kann.

Mein Problem besteht nun darin, das ganze in dieser Struktur in einen TreeView (TVirtualStringTree von Mike Lischke) zu bekommen.
Ich kann mir zwar alle Ordner anzeigen lassen, mit

xmlFolder.documentElement.selectNodes('//ordner'); aber dann weiss ich immer noch nicht erkennen kann, dass der Unterordner auch wirklich ein Unterordner ist, und wie dann die Dateien da hinein bekommen?!

Ich stehe echt absolut auf dem Schlauch, da das alles noch Neuland für ist - trotz der durchgearbeiteten Tutorials.

Wäre lieb, wenn mir jemand auf die Sprünge helfen würde - denn ich glaube, dass ich schon im Ansatz alles falsch mache (

Danke.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#2

Re: XML Verzeichnisstruktur in TreeView - wie?

  Alt 15. Mai 2006, 15:33
schau Dir mal das XML-Tree-Beispiel auf der Homepage von Mike Lischke an click.

Vielleicht hilft Dir das ja weiter.

Gruß

Onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: XML Verzeichnisstruktur in TreeView - wie?

  Alt 15. Mai 2006, 16:25
Hallo,

danke - leider hilft mir das nicht weiter, da ich die XMLTree.pas nicht kompilieren kann
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: XML Verzeichnisstruktur in TreeView - wie?

  Alt 15. Mai 2006, 17:45
Hallo Sascha,

du wirst da nicht der einzige sein, der das XmlTree-Beispiel nicht kompilieren kann - der Code setzt VST Version 2.5 voraus und einige Methoden haben geänderte Signaturen. Ich weiß jetzt auch nicht, wo dein Problem genau liegt, aber wenn es mehr auf der XML-Seite ist und du mit dem VST schon klar kommst, dann hilft dir vielleicht das Studium einer Demo für die Übernahme von XML-Daten in einen Viewer: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: XML Verzeichnisstruktur in TreeView - wie?

  Alt 15. Mai 2006, 21:04
Hallo marabu,

vielen Dank für Deine Antwort - das Beispiel werde ich mir ansehen.

Mein Problem liegt, wie Du bereits vermutet hast, tatsächlich auf XML-Ebene.
Ich weiss halt nicht, wie ich den Code schreiben soll, so dass ich alle Ordner in der gewünschten Struktur (Ordner -> Unterordner -> Unterordner...) in den Tree bekomme, und ob ein Ordner überhaupt einen Unterordner hat etc.
Ich habe leichte Orientierungsschwierigkeiten, da sich der Name des Ordners in einem weiteren Element darunter befindet.
Da blicke ich irgendwie nicht dran lang

Nun ja, jetzt erstmal das Demo - und wenn das nicht hilft, dann nerve ich weiter
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: XML Verzeichnisstruktur in TreeView - wie?

  Alt 15. Mai 2006, 21:53
Hier noch eine kleine Gehhilfe. Du kannst sie anstelle von ShowStructure() verwenden. Sie zeigt den Umgang mit deinem Dokument. Die Existenz von "ordner/name" und "datei" auf der selben Ebene ist kein gutes Design, aber wahrscheinlich möchte dich jemand mit diesem Dokument ärgern.

Delphi-Quellcode:
procedure TDemoForm.ShowFolder(e: IXMLDOMElement; nParent: TTreeNode);
var
  i: Integer;
  nl: IXMLDOMNodeList;
  n: TTreeNode;
  eChild, eName: IXMLDOMElement;
  s: String;
begin
  nl := e.selectNodes('ordner|datei');
  for i := 0 to Pred(nl.length) do
  begin
    eChild := nl.item[i] as IXMLDOMElement;
    eName := eChild.selectSingleNode('name') as IXMLDOMElement;
    if eChild.tagName = 'ordnerthen
    begin
      s := AnsiUppercase(eName.text);
      n := TreeNodes.AddChildObject(nParent, s, TReference.Create(eChild));
      ShowFolder(eChild, n);
    end else
    begin
      s := AnsiLowercase(eName.text);
      TreeNodes.AddChildObject(nParent, s, TReference.Create(eChild));
    end;
  end;
end;
marabu
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: XML Verzeichnisstruktur in TreeView - wie?

  Alt 16. Mai 2006, 12:05
Hallo marabu,

vielen Dank für das Beispiel und die Gehhilfe
Das hat wirklich etwas gebracht!!!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 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