Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ClientDataSet (https://www.delphipraxis.net/112131-clientdataset.html)

Cosamia 15. Apr 2008 15:26

Datenbank: XML • Zugriff über: ClientDataSet

ClientDataSet
 
Hallo zusammen,

ich bräuchte mal wieder ein Tipp von euch.

Ich will eine XML Datei in ein Grid einlesen, um später ein Report mit Rave zu realisieren.

Jetzt bin ich bisher noch auf keine bessere Idee gekommen, als die XML Datei mit einem ClientDataSet einzulesen.

Nun habe ich aber das Problem mit der Tabellenstruktur. Da jedes XML File anders ist, falle ich immer wieder auf die Nase.

Besteht die Möglichkeit, die Struktur zur Laufzeit zu definieren ? bzw die Struktur aus der bestehenden XML Datei auszulesen?

Danke im Voraus.

mashutu 15. Apr 2008 15:34

Re: ClientDataSet
 
Du kannst die Struktur so erstellen wie Du sie brauchst. Beispiel:

(aus dem Zusammenhabg gerissener Beispielcode:)
Delphi-Quellcode:
   
[...]
    cds := tClientDataSet.Create(self);

        cds.FieldDefs.Add('DIR',ftString,65);
        cds.FieldDefs.Add('Unit',ftString,25);
        cds.FieldDefs.Add('LastTest',ftDateTime);
        cds.FieldDefs.Add('Result',ftInteger);
        cds.FieldDefs.Add('comment',ftString,250);
        cds.FieldDefs.Add('Durance',ftString,50);
        cds.CreateDataSet;
        cds.SaveToFile(sTableName,dfxml);

    cds.free;

Cosamia 15. Apr 2008 15:37

Re: ClientDataSet
 
Ja, ok danke. Das habe ich zwischenzeitlich auch gefunden.

Jetzt fehlt mir nur noch die Idee, wie ich aus einer bestehenden XML Datei die "Struktur" aus lesen kann.

mashutu 15. Apr 2008 15:45

Re: ClientDataSet
 
Zitat:

Zitat von Cosamia
Ja, ok danke. Das habe ich zwischenzeitlich auch gefunden.

Jetzt fehlt mir nur noch die Idee, wie ich aus einer bestehenden XML Datei die "Struktur" aus lesen kann.

TClientDataset + TDataSource + Grid
================
anzeigen lassen

Ansonsten sind einfach strukturierte XML auch mit einem ASCII-Editor mehr oder weniger Selbsterklaerend

Cosamia 15. Apr 2008 15:54

Re: ClientDataSet
 
Zitat:

Zitat von mashutu
Zitat:

Zitat von Cosamia
Ja, ok danke. Das habe ich zwischenzeitlich auch gefunden.

Jetzt fehlt mir nur noch die Idee, wie ich aus einer bestehenden XML Datei die "Struktur" aus lesen kann.

TClientDataset + TDataSource + Grid
================
anzeigen lassen

Ansonsten sind einfach strukturierte XML auch mit einem ASCII-Editor mehr oder weniger Selbsterklaerend

Entweder stehe ich gerade auf dem Schlauch, oder du verstehst mein Problem nicht ganz.

TClientDataset + TDataSource + Grid ist klar.

Nur will das TClientDataSet eine feste Struktur bevor ich die XML Datei öffnen kann. Und da sich die XML Datei ändert kann ich die Struktur nicht fix im ClientDataSet hinterlegen.

Centrii 15. Apr 2008 16:06

Re: ClientDataSet
 
dann geh das XML-File doch erstmal mit einer Schleife durch und schau was für eine Struktur dein TClientDataSet
haben muss.
so mache ich das z.B.
Delphi-Quellcode:
  for i:=0 to XML.ChildNodes.Count-1 do
  begin
    for j:=0 to XML.ChildNodes[i].ChildNodes.Count-1 do
    begin
      eNode:=XML.ChildNodes[i].ChildNodes[j];
      if eNode.NodeName='equipment' then begin
        for k:=0 to eNode.ChildNodes.Count-1 do
        begin
          if eNode.ChildNodes[k].NodeName='elements' then
          begin
            for m:=0 to eNode.ChildNodes[k].ChildNodes.count-1 do
            begin
              mNode:=eNode.ChildNodes[k].ChildNodes[m];
              for n:=0 to mNode.ChildNodes.count-1 do
              begin
                if mNode.ChildNodes[n].NodeName='subsystem' then
                begin
                end;
              end;
            end;
          end;
        end;
      end;
    end;
  end;
nur als Beispiel, eben von Hand geschrieben...
Auf jeden Fall weißt du dann was für Spalten du brauchst.

Gruß Ruben


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 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