XML Datei-Struktur in eine MySQL Datenbank einpflegen
XML Datei-Struktur in eine MySQL Datenbank einpflegen
Halo Lazarus Gemeinde
Ich habe diesmal ein paar Fragen zu besagtem Thema. Da man im Netz wirklich viel dazu findet
ABER NICHT das was man braucht, möchte ich hier mal nachfragen.
XML Dateien werden sehr oft in ihrer Datenstruktur zerpflügt und nur die Daten der XML-Nodes kommen dann in eine MySQL Tabelle....
DIES möchte ich NICHT tun. Ich brauche das komplette XML, so wie es ist, als Datensatz.
Die XML Dateien sind Matroska Chapters oder Matroska Tags welche eine viel zu verschachtelte Struktur haben, so dass es keinen sinn macht jede menge Spalten anzulegen um dort die XML-Node-werte zu speichern.
Ich verwende die units Laz2_DOM, laz2_XMLRead, laz2_XMLWrite um die XML Dateien in meinem Programm zu laden, bearbeiten und zu speichern.
Gibt es die Möglichkeit ein XML-Document in einen String zu wandeln, welchen ich dann in der MySQL Dantenbank speichern kann?
Ein anderer Gedanke ist das XML in JSON umzuwandeln. JSON lässt sich wunderbar in einem einzelnen String darstellen. Allerdings müsste ich dann einen XML2JSON und JSON2XML converter schreiben.
Was habt ihr da noch für Ideen?
hubble
Ich habe diesmal ein paar Fragen zu besagtem Thema. Da man im Netz wirklich viel dazu findet
ABER NICHT das was man braucht, möchte ich hier mal nachfragen.
XML Dateien werden sehr oft in ihrer Datenstruktur zerpflügt und nur die Daten der XML-Nodes kommen dann in eine MySQL Tabelle....
DIES möchte ich NICHT tun. Ich brauche das komplette XML, so wie es ist, als Datensatz.
Die XML Dateien sind Matroska Chapters oder Matroska Tags welche eine viel zu verschachtelte Struktur haben, so dass es keinen sinn macht jede menge Spalten anzulegen um dort die XML-Node-werte zu speichern.
Ich verwende die units Laz2_DOM, laz2_XMLRead, laz2_XMLWrite um die XML Dateien in meinem Programm zu laden, bearbeiten und zu speichern.
Gibt es die Möglichkeit ein XML-Document in einen String zu wandeln, welchen ich dann in der MySQL Dantenbank speichern kann?
Ein anderer Gedanke ist das XML in JSON umzuwandeln. JSON lässt sich wunderbar in einem einzelnen String darstellen. Allerdings müsste ich dann einen XML2JSON und JSON2XML converter schreiben.
Was habt ihr da noch für Ideen?
hubble
Zuletzt geändert von hubblec4 am Di 18. Jul 2017, 15:50, insgesamt 1-mal geändert.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2807
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: XML Datei in eine MySQL Datenbank einpflegen
Verstehe die Anforderung nicht, XML ist doch ein Textdokument also ein String. Speichere den doch einfach in einem Datenbankfeld.
Wenn du ein TXMLDocument direkt in einem String ablegen möchtest, hilft dir der TStreamXMLWriter weiter.
Wenn du ein TXMLDocument direkt in einem String ablegen möchtest, hilft dir der TStreamXMLWriter weiter.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: XML Datei in eine MySQL Datenbank einpflegen
Dafür brauchst du nicht einmal xml2_read usw. Einfach nur die Datei in einen String einlesen und in die Datenbank abspeichern:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
str: TStream;
begin
str := TFileStream.Create(XML_FILE, fmOpenRead);
try
SetLength(s, str.Size);
str.ReadBuffer(s[1], Length(str));
Dataset.Insert;
Dataset.FieldbyName['Xml').AsString := s;
Dataset.Post;
finally
str.Free;
end;
end;
Re: XML Datei in eine MySQL Datenbank einpflegen
Ich habe ein XML nicht unbedingt direkt als XML Datei auf der Festplatte, meistens eben nur als XML.Document als variable.m.fuchs hat geschrieben:Verstehe die Anforderung nicht, XML ist doch ein Textdokument also ein String. Speichere den doch einfach in einem Datenbankfeld.
Wenn du ein TXMLDocument direkt in einem String ablegen möchtest, hilft dir der TStreamXMLWriter weiter.
Edit:
TStreamXMLWriter werde ich mir mal anschuen. Danke
Zuletzt geändert von hubblec4 am Di 18. Jul 2017, 15:56, insgesamt 1-mal geändert.
Re: XML Datei in eine MySQL Datenbank einpflegen
wp_xyz hat geschrieben:Dafür brauchst du nicht einmal xml2_read usw. Einfach nur die Datei in einen String einlesen und in die Datenbank abspeichern:Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject); var s: String; str: TStream; begin str := TFileStream.Create(XML_FILE, fmOpenRead); try SetLength(s, str.Size); str.ReadBuffer(s[1], Length(str)); Dataset.Insert; Dataset.FieldbyName['Xml').AsString := s; Dataset.Post; finally str.Free; end; end;
Yupp, das sollte auf jedenfall für physische Datein klappen.
Ich habe mal den Thema-Namen angepasst, da ich mehr mit XML.Document zu tun habe als mit einer Datei direkt.
Also in meinem Proggi gibt es eine Variable welche ein XML-Document bereit hält, besser gesagt erstellt(aus einer DatenKlasse heraus).
Wenn ich das XML als Datei brauche dann: WriteXMLFile();
Aber ich möchte jetzt ungern erst die Datei erstellen und diese dann wieder als String einlesen, Datei löschen usw.
Re: XML Datei-Struktur in eine MySQL Datenbank einpflegen
Dann schreib halt in einen MemoryStream, den du genauso wie oben gezeigt in einen einzigen String auslesen kannst. Beliebter Fehler, so nebenbau bemerkt: Nachdem du das XMLDocument in den Memorystream geschrieben hast, musst du den Stream wieder an den Anfang setzen, bevor du den Stream-Inhalt als String auslesen kannst.
Re: XML Datei-Struktur in eine MySQL Datenbank einpflegen
OK. das wäre auch ne idee. Danke für den Hinweis.
Und für das "Zurück" aus der DB müsste ich dann den String in einen Memory-Stream laden und dann als XML.Document!?
Und für das "Zurück" aus der DB müsste ich dann den String in einen Memory-Stream laden und dann als XML.Document!?
Re: XML Datei-Struktur in eine MySQL Datenbank einpflegen
per ReadXMLFile aus dem Memorystream ins XMLDocument einlesen. Es ist wie ein Lego-Baukasten. Öffne einfach mal die von dir genannten Units laz2_xmlread, laz2_xmlwrite und laz2_dom (mit gedrückter CTRL-Taste auf dem Unit-Namen klicken) und scrolle durch den Interface-Teil der Units, um die zur Verfügung stehenden Lego-Bausteine kennenzulernen.
Zuletzt geändert von wp_xyz am Di 18. Jul 2017, 16:52, insgesamt 1-mal geändert.
Re: XML Datei-Struktur in eine MySQL Datenbank einpflegen
Das tue ich schon recht oft. Und ja, manchmal finde ich dann auch das was ich suchte, aber irgendwie wollte es diesmal nicht so recht klappen.
Danke für die Hilfen. Ich versuche es jetzt mal mit diesem Ansatz.
Danke für die Hilfen. Ich versuche es jetzt mal mit diesem Ansatz.