Entwickler-Ecke
Datenbanken - XML Daten in Firebird DB einfügen.
basner - Do 11.06.09 15:47
Titel: XML Daten in Firebird DB einfügen.
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
Narses: Topic aus VCL (Visual Component Library) verschoben am Do 11.06.2009 um 23:15
MAlsleben - 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.
basner - 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 - 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.
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);
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
Narses: Code- durch Delphi-Tags ersetzt
MAlsleben - 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
basner - 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:
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.DocumentElement.Attributes['Name']); end; end; except on E: Exception do ShowMessage(E.Message); end; |
Die XML Datei die ich auslesen will so:
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
Narses: Code- durch Delphi-Tags ersetzt
basner - 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.
basner - Mi 17.06.09 09:27
Danke, werde ich mir gleich einmal anschauen.
MAlsleben - 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.
basner - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!