![]() |
XML to MySQL
Hallo
Ich nutze folgenden Code um XML Daten in eine MySQL DB zu schreiben:
Delphi-Quellcode:
//#######################################################################//
//## Procedure ProcessFile: ##// //#######################################################################// //## Datum: Änderung: ##// //## ====== ========= ##// //## 08.10.2003 Initial Release ##// //#######################################################################// procedure TForm1.ProcessFile(Filename: TFileName); var I: Integer; XMLDoc: IXMLDOMDocument2; dealer, envelope, department, extracode, operator: IXMLDOMNode; Order_Nodes: IXMLDOMNodeList; begin // XML COM Interface laden XMLDoc := CoDOMDocument40.Create; XMLDoc.setProperty('NewParser', True); XMLDoc.load(Filename); // Fehler überprüfen if XMLDoc.parseError.errorCode <> 0 then begin ShowMessage('XML Fehler: '#13#10 + XMLDoc.parseError.reason); Exit; end; // alle Order_Nodes Nodes heranholen Order_Nodes := XMLDoc.documentElement.selectNodes('order-section'); for I := 0 to Pred(Order_Nodes.length) do begin dealer := Order_Nodes.item[I].selectSingleNode('dealer'); envelope := Order_Nodes.item[I].selectSingleNode('envelope'); department := Order_Nodes.item[I].selectSingleNode('department'); extracode := Order_Nodes.item[I].selectSingleNode('extracode'); operator := Order_Nodes.item[I].selectSingleNode('operator'); ZQuery.Insert; // Datei in Appendmodus setzen with ZQuery do begin if Assigned(dealer) then FieldByName('dealer').AsString:= dealer.text; if Assigned(envelope) then FieldByName('envelope').AsString := envelope.text; if Assigned(department) then FieldByName('department').AsString := department.text; if Assigned(extracode) then FieldByName('extracode').AsString := extracode.text; if Assigned(operator) then FieldByName('operator').AsString:= operator.text; end; ZQuery.Post; // Satz schreiben end; end; Die XML Datei sieht wie folgt aus.....
XML-Code:
Wie kann ich es machen, dass ich auch die Daten aus der "Article-Section" (Article und Qty) mit in die DB importiere?
<batch-section>
<machine-id> 21 </machine-id> <equipment-type> 11 </equipment-type> <pricing-data> 1 </pricing-data> <order-section> <dealer> 520526 </dealer> <envelope> 160000 </envelope> <department> 41 </department> <extracode> 0 </extracode> <operator> 630 </operator> <cd_sn> 721 </cd_sn> <terminal_id> 1066627 </terminal_id> <selection_type> 3 </selection_type> <boid> 00401783-520526-160000-01066627-000721 </boid> <article-section> <article> 1791 </article> <qty> 59 </qty> </article-section> </order-section> <order-section> <dealer> 520242 </dealer> <envelope> 322456 </envelope> <department> 41 </department> <extracode> 0 </extracode> <operator> 630 </operator> <cd_sn> 488 </cd_sn> <terminal_id> 1066720 </terminal_id> <selection_type> 3 </selection_type> <boid> 00401783-520242-322456-01066720-000488 </boid> <article-section> <article> 1791 </article> <qty> 55 </qty> </article-section> </order-section> ....usw........ </batch-section> Zitat:
Was muss ich ändern? Bekomme es einfach nicht hin :wall: Gruß Frank |
Re: XML to MySQL
Mh.... :gruebel:
Ich glaub ich hab´s ..........
Delphi-Quellcode:
:roll: scheint zu funzen :gruebel:
//#######################################################################//
//## Procedure ProcessFile: ##// //#######################################################################// //## Datum: Änderung: ##// //## ====== ========= ##// //## 08.10.2003 Initial Release ##// //#######################################################################// procedure TForm1.ProcessFile(Filename: TFileName); var I: Integer; XMLDoc: IXMLDOMDocument2; dealer, envelope, department, extracode, operator, article, qty: IXMLDOMNode; Order_Nodes: IXMLDOMNodeList; begin // XML COM Interface laden XMLDoc := CoDOMDocument40.Create; XMLDoc.setProperty('NewParser', True); XMLDoc.load(Filename); // Fehler überprüfen if XMLDoc.parseError.errorCode <> 0 then begin ShowMessage('XML Fehler: '#13#10 + XMLDoc.parseError.reason); Exit; end; // alle Order_Nodes Nodes heranholen Order_Nodes := XMLDoc.documentElement.selectNodes('order-section'); for I := 0 to Pred(Order_Nodes.length) do begin gauge1.maxvalue := zquery.FieldCount; gauge1.Visible:= True; // nodes mit inhalt heranholen dealer := Order_Nodes.item[I].selectSingleNode('dealer'); envelope := Order_Nodes.item[I].selectSingleNode('envelope'); department := Order_Nodes.item[I].selectSingleNode('department'); extracode := Order_Nodes.item[I].selectSingleNode('extracode'); operator := Order_Nodes.item[I].selectSingleNode('operator'); article := Order_Nodes.item[I].selectSingleNode('article-section/article'); // hier einfach 'article-section' eingefügt... qty := Order_Nodes.item[I].selectSingleNode('article-section/qty'); // hier einfach 'article-section' eingefügt... ZQuery.Insert; // Datei in Appendmodus setzen with ZQuery do begin if Assigned(dealer) then FieldByName('dealer').AsString:= dealer.text; if Assigned(envelope) then FieldByName('envelope').AsString := envelope.text; if Assigned(department) then FieldByName('department').AsString := department.text; if Assigned(extracode) then FieldByName('extracode').AsString := extracode.text; if Assigned(operator) then FieldByName('operator').AsString:= operator.text; if Assigned(article) then FieldByName('article').AsString:= article.text; if Assigned(qty) then FieldByName('qty').AsString:= qty.text; gauge1.progress := gauge1.progress + 1; end; ZQuery.Post; // Satz schreiben end; gauge1.progress := 0; gauge1.Visible:= false; end; Gruß Frank |
Re: XML to MySQL
jetzt hab ich doch noch ein Problem.... :wall:
Wie soll ich diesen xml File in die DB importieren?
XML-Code:
Hier gibt es 2 oder sogar manchmal auch noch mehrmals den Abschnitt <Part> (bis zu 10x) Also Lincode 8901 - 8910 wenn das hilft? :gruebel:
<batch-section>
<machine-id> 1 </machine-id> <equipment-type> 2 </equipment-type> <pricing-data> 0 </pricing-data> <order-section> <dealer> 809983 </dealer> <envelope> 181828 </envelope> <department> 41 </department> <global> <article> 1740 </article> </global> <part> <linecode>8901</linecode> <article-section> <article> 2651 </article> <qty> 52 </qty> </article-section> </part> <part> <linecode>8902</linecode> <article-section> <article> 2651 </article> <qty> 53 </qty> </article-section> </part> </order-section> <order-section> <dealer> 225885 </dealer> <envelope> 182038 </envelope> <department> 41 </department> <global> <article> 1149 </article> </global> <part> <linecode>8901</linecode> <article-section> <article> 1357 </article> <qty> 56 </qty> </article-section> </part> <part> <linecode>8902</linecode> <article-section> <article> 1357 </article> <qty> 54 </qty> </article-section> </part> <part> <linecode>8903</linecode> <article-section> <article> 1359 </article> <qty> 1 </qty> </article-section> </part> </order-section> </batch-section> In der Tabelle soll es dann so stehen.... "dealer","envelope","department","Articel_Global", "Lincode1","Article1","qty1","linecode2","Article2 ","qty2" usw.... Jemand ne Idee ? Bissher habe ich oben stehenden code verwendet........... Gruß Frank |
Re: XML to MySQL
:roll: *mal nach vorne schiebt*
|
Re: XML to MySQL
Zitat:
Deine Idee mit "Article1" bis "Article10" ist Banane. Hier sind 2 Tabellen mit einer Master-Dateil Beziehung erforderlich. |
Re: XML to MySQL
Zitat:
Hab kein Problem damit die Daten auf mehrere Tabellen zu verteilen. Muss sie halt nur erst mal darein bekommen :roll: Wie würde es denn mit 2 oder mehreren Tabellen gehen? Gruß Frank |
Re: XML to MySQL
:? *mal nach vorne schiebt*
Kann mir keiner helfen? Wie macht man das mit einer Master-Deteil Tabelle? Gruß Frank |
Re: XML to MySQL
:roll: *schieb*
Kann mir keiner helfen :wall: :cry: |
Re: XML to MySQL
Ih, zwei schiebepostings hintereinander :shock:
Da WILL ich gar nicht helfen, damit darf man keinen Erfolg haben. |
Re: XML to MySQL
:( Na Super... Will soll man es denn sonst machen wenn man Hilfe benötigt :gruebel:
Sehr konstruktiv :thumb: Danke :!: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz