Andreas: XML in Datenbank konvertieren

Hi,

gibt es eigentlich ein Tool mit dem ich XML-Daten wieder zurück in eine Datenbank konvertieren kann? Beispiel:

<?xml version="1.0"?>
<orders>
  <order>
    <id>1</id>
    <name>Andreas</name>
    <artinorder>
      <art>
        <id>1</id>
        <bez>Buch "Wie werde ich cool?"</bez>
      </art>
    </artinorder>
  </order>
</orders>

Ich meine, es ist aus dieser Struktur zu erkennen, daß in diesen XML-Daten 2 Tabellen stecken:

"order" (Aufträge) und "artinorder" (Auftragspositionen)

Also könnte man die XML-Daten wieder in 2 Tabellen speichern, so daß sie von zum Beispiel einer Warenwirtschaft importiert werden können. Das Problem dabei ist: Das Programm sollte natürlich jede x-beliebige XML-Struktur erkennen können.

Also ich suche zur Zeit so etwas, wenn möglich als Perl-Skript - hat jemand schon mal sowas gesehen?

Danke!

Ciao
Andreas

  1. Hallo Andreas,

    Also könnte man die XML-Daten wieder in 2 Tabellen speichern, so daß sie von zum Beispiel einer Warenwirtschaft importiert werden können. Das Problem dabei ist: Das Programm sollte natürlich jede x-beliebige XML-Struktur erkennen können.

    Also ich suche zur Zeit so etwas, wenn möglich als Perl-Skript - hat jemand schon mal sowas gesehen?

    Bin nicht sicher, ob ich dich richtig verstanden habe, aber das Programm müßte ja eigentlich dein XML-Dokument parsen, dann aus den Werten entsprechende INSERT-Statements basteln und ab in die DB damit. Sowas bekommst du für deinen Fall mit einem Parser für XML in Perl hin. Einige davon findest du hier: http://www.perlxml.com/faq/perl-xml-faq.html oder du testest den von Wolfgang: <../../sfarchiv/2000_2/t13709.htm#a69964>.

    Soll das Programm _beliebige_ XML-Dokumente parsen können, dann muss es anhand des XML-Dokuments erkennen können, welche Elemente in welche Tabelle gehören. Eine mögliche Regel wäre immer, wenn ein Elementknoten wiederum Kinder hat, gibts ne neue Tabelle, oder so ähnlich.

    Hoffe das hilft die in irgendeiner Weise.

    Ciao
    Franz

    1. Hi,

      Bin nicht sicher, ob ich dich richtig verstanden habe, aber das Programm müßte ja eigentlich dein XML-Dokument parsen, dann aus den Werten entsprechende INSERT-Statements basteln und ab in die DB damit. Sowas bekommst du für deinen Fall mit einem Parser für XML in Perl hin. Einige davon findest du hier: http://www.perlxml.com/faq/perl-xml-faq.html oder du testest den von Wolfgang: <../../sfarchiv/2000_2/t13709.htm#a69964>.

      Ich hab meinen Parser inzwischen weiterentwickelt.
      Der in den obigen Thread angegebene ist nicht mehr
      richtig.
      Auf Anfrage veroeffentliche ich das aktuelle Modul
      aber gerne wieder.
      Es ist im Prinzip nicht anders als XML::Simple, nur das
      es nicht den -etwas- bugbehafteten XML-Parser benoetigt
      der auf CPAN liegt...

      Mein Modul kann XML-files lesen, aber auch erstellen,
      wobei allerdings nur die Well-fomiertheit vorrausgesetzt wird,
      aber nicht auf die DTD geachtet wird;

      Ciao,
        Wolfgang

      1. Hi fjh & Wolfgang!

        Erstmal vielen Dank für Euer Statement. Anscheinend gibt es offiziell noch keine Anwendung die beliebige XML-Daten in Datenbanken konvertieren kann. Ist aber auch ok, der Standard ist ja gerade erst im Kommen.

        An Wolfgngs Modul bin ich sehr interessiert, vor allem weil der Parser von CPAN wirklich etwas Buggy ist - bei Gelegenheit kannst Du mir ja mal die URL oder das Modul mailen?! Thanx!

        Ich habe übrigens nach so einem Parser gefragt weil ich selbst gerade so etwas am programmieren bin (natürlich in Perl). Ein Modul, welches CSV-Datenbanken in XML konvertiert besteht schon, ist ja gar kein Thema. Aber das ganze rückgängig zu machen ist schon irgendwie krank in Perl, jedenfalls habe ich schon 3 Mal neu angefangen...

        Okay, danke nochmal!

        Ciao
        Andreas

        1. Hi,

          Erstmal vielen Dank für Euer Statement. Anscheinend gibt es offiziell noch keine Anwendung die beliebige XML-Daten in Datenbanken konvertieren kann. Ist aber auch ok, der Standard ist ja gerade erst im Kommen.

          An Wolfgngs Modul bin ich sehr interessiert, vor allem weil der Parser von CPAN wirklich etwas Buggy ist - bei Gelegenheit kannst Du mir ja mal die URL oder das Modul mailen?! Thanx!

          Ich habe übrigens nach so einem Parser gefragt weil ich selbst gerade so etwas am programmieren bin (natürlich in Perl). Ein Modul, welches CSV-Datenbanken in XML konvertiert besteht schon, ist ja gar kein Thema. Aber das ganze rückgängig zu machen ist schon irgendwie krank in Perl, jedenfalls habe ich schon 3 Mal neu angefangen...

          Du findest den aktuellen Parser und eine Demo-XML hier:
          http://www.uni-erlangen.de/cgi-bin/webadm/autoindex.pl?path=perl

          ich benutz ihn uebrigens auch fuer ein  Untermodul einer
          XML-DB.

          Ciao,
            Wolfgang

          1. Hallo Wolfgang!

            "Die folgenden Tags wurden nicht geschlossen: file, file, file, file, author, author. "

            Grüße
            Thomas

            1. Hi,

              "Die folgenden Tags wurden nicht geschlossen: file, file, file, file, author, author. "

              Ich weiss , aber ein Schub an faulheit hat mich an
              der Stelle uebermannt und willenlos zurueckgelassen....:)
              Ich sollte da am Ende noch ein '/' hintun.

              Ciao,
                Wolfgang