Autor Beitrag
basner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 11.06.09 15:47 
Hallo.


Vielleicht könnt ihr mir wieder weiter helfen.

Habe folgende Aufgabe: Ich soll eine XML Datei auslesen und die ausgelesenen Daten der einzelnen Knoten in eine Firebird DB speichern.

Leider hat mir die Suche nicht viel geholfen und würde ieuch bitten mir kurze Hilfestellungen zu diesem Thema zugeben.

Habe es schon mit TXMLDocument probiert stecke aber irgendwie fest und weiß nicht genau wie ich auf die einzelnen Knoten (besser geschrieben den Inhalt) zugreifen kann und diesen dann in das entsprechende Datenbankfeld überführen kann.

Und die meißten Tutorials gehen in eine andere Richtung.


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Do 11.06.2009 um 23:15
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Mo 15.06.09 10:51 
Hi,

ich habe mal etwas ähnliches mit XMLTransformProvider gemacht. Dazu gibt es auch bei Delphi unter gleichen Namen eine Demo. Schau Dir diese mal an.

Gruß Micha.

_________________
Viele Wege führen nach Rom.
basner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mo 15.06.09 16:26 
Vielen Dank.

Aber wo finde ich diese Demo und kannst du mir ein kleines Beispiel geben?

Wäre nett.

Habe mit XML in Delphie noch keinerlei Erfahrung und bin für jeden Tip dankbar.
basner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 16.06.09 10:47 
Kann mir bitte einer dazu ein kleines Beispiel Posten.

Wie komme ich auf die einzelnen Knoten in einem XML Dokument, so das ich die Werte in eine Datenbank übertragen kann.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
    XML : TXMLDocument;
    XMLKnoten: IXMLNode;
    i1 : word;
    XML_Inhalt : String;

begin

    XML := TXMLDocument.Create(nil);
    XML.Active := True;
    try

        if OpenDialog1.Execute then begin

            XML.LoadFromFile(OpenDialog1.FileName);


        //einzelne Knoten des XML Dokumentes durchlaufen
        for i1 := 0 to XML.ChildNodes.Count -1  do begin

       
         XML.

        end;
    end;

    except

      on E: Exception do
        ShowMessage(E.Message);

    end;

    Free;
  end;


Komme nicht weiter.

Eine kleine Hilfe würde reichen so das ich sehen kann wie ich in dem XML Dokument auf die Knoten zugreifen kann und dann in die Firebird Datenbank exportieren kann.


Vielen Dank an euch.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Di 16.06.09 15:34 
Hi,

bei delphi 2007 steht bei mir das ganze unter ..\CodeGear\RAD Studio\5.0\Demos\DelphiWin32\VCLWin32\Internet\XMLTransformProvider\. Es kommt darauf an, wo Du die Demos hin installiert hast, da wird , wennn ich mich recht erinnere, bei der Installation auch gefragt. Bei älteren Versionen war es unter ..\Borland\Delphi\Demos\Internet..usw.
Zum anderen hängt es von der Delphi Version ab. Ich arbeite mit der Enterprise-Version, in wie weit die Komponente XMLTransformProvider in den kleineren Versionen dabei ist, kann ich leider nicht sagen.
Jedenfaslls nach dem Beispiel der Demo habe ich das bei mir realisiert. Mit einem kleinen Stückchen Code ist das allerdings nicht getan.
Gruss Micha

_________________
Viele Wege führen nach Rom.
basner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Di 16.06.09 15:48 
Vielen Dank.

Leider hilft mir die Demo nicht weiter.

Vielleicht könntest du mir einen kleinen Ansatz geben.

Habe gerade das ausprobiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
 var i : word;
begin
    try
   if OpenDialog1.Execute then begin

  XMLDocument1.LoadFromFile(OpenDialog1.FileName);
  XMLDocument1.Active := true;

  XMLDocument1.ChildNodes.First;

   for i := 0 to XMLDocument1.ChildNodes.Count -1 do begin

  //Memo1.Lines.Add(XMLDocument1.ChildNodes[i].Text);
  Memo1.Lines.Add(XMLDocument1.DocumentElement.Attributes['Name']);
  //XMLDocument1.ChildNodes.FindNode('Addresses');  //   DocumentElement.ChildNodes['Addresses'].ChildNodes['Addresslabel'].ChildNodes['name'].ChildNodes['street'].ChildNodes['city'].Text;
   end;
  end;
    except
      on E: Exception do
        ShowMessage(E.Message);
    end;

Die XML Datei die ich auslesen will so:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?xml version="1.0" encoding="utf-8" ?> 
- <Catalog xsi:noNamespaceSchemaLocation="http://www.--.de/Schema/version_1_4/Catalog.xsd" name="Fritz" version="8_2007" catalogID="ss76" currency="Euro" currencySymbol="€" validStartDate="2006-10-01.0000000+02:00" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <ValidCountries>
  <ValidCountry isoCountryCode="DE" /> 
  </ValidCountries>
- <Supplier supplierID="DE11111" name="Fritz" vatID="DE134846576" taxNo="" registration="Entenhausen " ceo="Gunter">
- <Addresses>
  <Address label="Fritz" name="Fritz" street="Musterstraße" zip="77777" city="NEntenhausen" isoCountryCode="DE" phone="+90" fax="+49 (" email="info@" /> 
  </Addresses>
  </Supplier>

Nur was mache ich falsch. Benutze TXMLDOCUMENT. Müsste doch die einzelnen Knoten so auch durchgehen können um Sie dann in die Datenbank zu schreiben. Oder :(

Und die Demo funktioniert auch leider nicht.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
basner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mi 17.06.09 07:51 
Guten morgen.

Kann mir vielleicht jemand noch ein Beispiel zu XMLTransformProvider geben, da meine Demo nicht funktioniert.

Vielleicht schon mit einem kleinen Ansatz zum oben benannten Problem?

Vielen Dank.
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Mi 17.06.09 09:06 
Guten Morgen,

wie wäre es damit: www.delphi-library.d...und+Delphi_3013.html
Hier wird unter anderem schön beschrieben, wie man die Daten aus dem XML einliest. Mußt Dich nur von vorne her der Reihe nach durcharbeiten.

Grüße,
Uli
basner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mi 17.06.09 09:27 
Danke, werde ich mir gleich einmal anschauen.
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Mi 17.06.09 10:54 
Hi,

wo ist das Problem mit der Demo vom XMLTransformProvider. Bei mir funktionierts. Zur kurzen Erklärung, bei der Demo werden die Daten einer XML Datei in ein ClientDataset gebracht. Aber das steht auch alles bei der Demo dabei. Vom ClientDataset die Daten in eine Datenbank zu bringen sollte dann ja nicht mehr das Problem sein. Schau doch einfach mal in die Hilfe zur o.g. Komponente bzw. im Memo der Demo was da geschrieben steht. Damit solltest Du schon verstehen, wie das ganze funktioniert.

Gruß Micha.

_________________
Viele Wege führen nach Rom.
basner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mi 17.06.09 11:17 
Ok. Nein die Demo ist wirklich nicht mehr zu gebrauchen keine Ahnung warum. Komme jetzt gut vorran.

Eine Frage vielleicht noch. Ich habe einen Knoten Artikel der besitzt ein Atribut Artikel ID. Dieses Atribut ist mehrfach in diesem Artikelknoten vorhanden. Wie kann ich diesen am schnellsten durchlaufen damit ich alle id#s dann habe?


Und vielen Dank für eure Hilfe.