BMEcat XML Datei in MySQL laden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • BMEcat XML Datei in MySQL laden

    Hallo zusammen,

    Da ich bis dato mit XML noch nix zu tun hatte, hab ich da mal ein kleines Problem:

    Ich möchte gern die Daten aus einer BMEcat XML- Katalogdatei mittels PHP in eine Datenbank Importieren, weis aber nicht wie ich das am besten Anstelle?

    Hier mal der Inhalt der catalog.xml zur Veranschaulichung:


    <?xml version="1.0" encoding="iso-8859-1"?>
    <BMECAT version="1.2" xmlns="http://www.bmecat.org/bmecat/1.2/bmecat_new_catalog">
    <HEADER>
    <GENERATOR_INFO>Created by LxBMECAT 1.0</GENERATOR_INFO>
    <CATALOG>
    <LANGUAGE>DEU</LANGUAGE>
    <CATALOG_ID></CATALOG_ID>
    <CATALOG_VERSION>1.0</CATALOG_VERSION>
    <CURRENCY>EUR</CURRENCY>
    <DATETIME type="generation_date">
    <TIME>18:33:56</TIME>
    <DATE>2007-12-19</DATE>
    </DATETIME>
    </CATALOG>
    <SUPPLIER>
    <SUPPLIER_NAME>Lexware faktura+auftrag</SUPPLIER_NAME>
    </SUPPLIER>
    </HEADER>
    <T_NEW_CATALOG>
    <CATALOG_GROUP_SYSTEM>
    <CATALOG_STRUCTURE type="root">
    <GROUP_ID>1</GROUP_ID>
    <GROUP_NAME>Produktgruppen</GROUP_NAME>
    <PARENT_ID>0</PARENT_ID>
    <GROUP_DESCRIPTION> </GROUP_DESCRIPTION>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARTICLE_SORT_ORDER>0</UDX.ARTICLE_SORT_ORDER>
    </USER_DEFINED_EXTENSIONS>
    </CATALOG_STRUCTURE>
    <CATALOG_STRUCTURE type="leaf">
    <GROUP_ID>2</GROUP_ID>
    <GROUP_NAME>Bücher</GROUP_NAME>
    <PARENT_ID>1</PARENT_ID>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARTICLE_SORT_ORDER>0</UDX.ARTICLE_SORT_ORDER>
    </USER_DEFINED_EXTENSIONS>
    </CATALOG_STRUCTURE>
    <CATALOG_STRUCTURE type="leaf">
    <GROUP_ID>3</GROUP_ID>
    <GROUP_NAME>Lexware Pro</GROUP_NAME>
    <PARENT_ID>1</PARENT_ID>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARTICLE_SORT_ORDER>0</UDX.ARTICLE_SORT_ORDER>
    </USER_DEFINED_EXTENSIONS>
    </CATALOG_STRUCTURE>
    <CATALOG_STRUCTURE type="leaf">
    <GROUP_ID>4</GROUP_ID>
    <GROUP_NAME>Software Lexware</GROUP_NAME>
    <PARENT_ID>1</PARENT_ID>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARTICLE_SORT_ORDER>0</UDX.ARTICLE_SORT_ORDER>
    </USER_DEFINED_EXTENSIONS>
    </CATALOG_STRUCTURE>
    <CATALOG_STRUCTURE type="leaf">
    <GROUP_ID>5</GROUP_ID>
    <GROUP_NAME>Software/Stückliste</GROUP_NAME>
    <PARENT_ID>1</PARENT_ID>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARTICLE_SORT_ORDER>0</UDX.ARTICLE_SORT_ORDER>
    </USER_DEFINED_EXTENSIONS>
    </CATALOG_STRUCTURE>
    </CATALOG_GROUP_SYSTEM>
    <ARTICLE>
    <SUPPLIER_AID>5</SUPPLIER_AID>
    <MIME_INFO>
    <MIME>
    <MIME_TYPE>image/jpeg</MIME_TYPE>
    <MIME_SOURCE>/article_images/lexware.jpg</MIME_SOURCE>
    <MIME_PURPOSE>normal</MIME_PURPOSE>
    </MIME>
    </MIME_INFO>
    <ARTICLE_ORDER_DETAILS>
    <ORDER_UNIT>C62</ORDER_UNIT>
    </ARTICLE_ORDER_DETAILS>
    <ARTICLE_DETAILS>
    <DESCRIPTION_SHORT>Lexware financial office 2005</DESCRIPTION_SHORT>
    <DESCRIPTION_LONG>Die ideale Komplettlösung - Buchhaltung, Faktura und Lohnabrechnung in einem Paket.</DESCRIPTION_LONG>
    </ARTICLE_DETAILS>
    <ARTICLE_FEATURES>
    <FEATURE>
    <FNAME>Gewicht</FNAME>
    <FVALUE>0.800000</FVALUE>
    </FEATURE>
    <FEATURE>
    <FNAME>artikelnr</FNAME>
    <FVALUE>109017</FVALUE>
    </FEATURE>
    <FEATURE>
    <FNAME>beschreibung</FNAME>
    </FEATURE>
    </ARTICLE_FEATURES>
    <ARTICLE_PRICE_DETAILS>
    <ARTICLE_PRICE type="net_list">
    <PRICE_AMOUNT>249.9000</PRICE_AMOUNT>
    <TAX>0.1600</TAX>
    </ARTICLE_PRICE>
    </ARTICLE_PRICE_DETAILS>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARBITRARY_DATA>3;249.9000</UDX.ARBITRARY_DATA>
    </USER_DEFINED_EXTENSIONS>
    </ARTICLE>
    <ARTICLE>
    <SUPPLIER_AID>6</SUPPLIER_AID>
    <MIME_INFO/>
    <ARTICLE_ORDER_DETAILS>
    <ORDER_UNIT>C62</ORDER_UNIT>
    </ARTICLE_ORDER_DETAILS>
    <ARTICLE_DETAILS>
    <DESCRIPTION_SHORT>Lexware financial office pro</DESCRIPTION_SHORT>
    <DESCRIPTION_LONG>Das neue Lexware financial office pro ist die Traumkombination für ihre Buchhaltung.</DESCRIPTION_LONG>
    </ARTICLE_DETAILS>
    <ARTICLE_FEATURES>
    <FEATURE>
    <FNAME>Gewicht</FNAME>
    <FVALUE>0.400000</FVALUE>
    </FEATURE>
    <FEATURE>
    <FNAME>artikelnr</FNAME>
    <FVALUE>109018</FVALUE>
    </FEATURE>
    <FEATURE>
    <FNAME>beschreibung</FNAME>
    </FEATURE>
    </ARTICLE_FEATURES>
    <ARTICLE_PRICE_DETAILS>
    <ARTICLE_PRICE type="net_list">
    <PRICE_AMOUNT>688.7900</PRICE_AMOUNT>
    <TAX>0.1600</TAX>
    </ARTICLE_PRICE>
    </ARTICLE_PRICE_DETAILS>
    <USER_DEFINED_EXTENSIONS>
    <UDX.ARBITRARY_DATA>3;688.7900</UDX.ARBITRARY_DATA>
    </USER_DEFINED_EXTENSIONS>
    </ARTICLE>
    <ARTICLE_TO_CATALOGGROUP_MAP>
    <ART_ID>5</ART_ID>
    <CATALOG_GROUP_ID>5</CATALOG_GROUP_ID>
    </ARTICLE_TO_CATALOGGROUP_MAP>
    <ARTICLE_TO_CATALOGGROUP_MAP>
    <ART_ID>6</ART_ID>
    <CATALOG_GROUP_ID>3</CATALOG_GROUP_ID>
    </ARTICLE_TO_CATALOGGROUP_MAP>
    </T_NEW_CATALOG>
    </BMECAT>

    Meine Datenbank enthält folgende Tabellen und Felder, welche mit dem Inhalt aus der Datei gefüllt werden sollen:

    Tabellen Felder

    Katalog Catalog_ID Catalog_Version Currency Date Time Supplier Language Generator

    Gruppen Group_ID Parent_ID Group_Name Structure_Type Sort_Order

    Artikel Article_ID Group_ID Description_Short Description_Long Feature_Gewicht Feature_ArtikelNr Feature_Varianten Order_Unit Price_Amount Price_Type Tax Arbitary_Data Mime_Type_1 Mime_Source_1 Mime_Purpose_2 Mime_Source_2 Mime_Purpose_2

    Wäre sehr Dankbar, wenn mir als Laie das jemand Verständlich erklären könnte (am besten mit einem Code- Beispiel)

    LastBoyScout

  • #2
    Wo scheiterst du denn? Hast du überhaupt schon angefangen zu programmieren? Dann zeig mal her und erkläre, was nicht läuft.

    Kommentar


    • #3
      Hi onemorenerd,

      Ich bin Einsteiger in Sachen PHP, hab mal einen VHS- Kurs besucht und mich seit her autodidaktisch vorgearbeitet.

      Bin bei diesem Projekt bis dato auch noch in der "Vorbereitungsphase" und hab daher mal die benötigten Tabellen und Felder aufgelistet, aber ich finde eben keinen richtigen Einstiegs punkt bezüglich xml.

      Ist auch das erste mal, das ich mit xml in Berührung komme und mir so ne Datei mal von innen ansehe.

      Hab schon seit Tagen umher gegoogelt aber ich finde irgendwie nicht das passende, oder ich bin vermutlich zu Blöd und es muss mir mal jemand leicht Verständlich Übersetzen.

      Wie fängt man so was am besten an? mit welchen Funktionen usw?
      Kannst du es mir bitte mal anhand der beispiel xml Veranschaulichen!

      Gruß und schöne Feiertage wünscht,
      LastBoyScout

      Kommentar


      • #4
        http://google.com/search?q=php+xml+tutorial

        Kommentar


        • #5
          Diese Suche habe ich natürlich als erstes bemüht, aber es wird (in für mich verständlicher Form) meist nur auf SimpleXML eingegangen, was aber wiederum PHP5 voraussetzt. dontknow
          Auf meinem Server läuft aber PHP4, der Provider würde zwar Kostenfrei auf PHP5 wechseln, aber da hab ich Angst, das andere Scripte nicht mehr laufen.

          Ein passendes Beispiel, mit denen man es immer noch am besten kapiert, hab ich leider nicht finden können.

          Möchte ja nicht gleich XML Studieren müssen und experte werden um diese Funktionalität zu verstehen.

          Wäre daher jedem sehr Dankbar, der mir die benötigten Funktionen an meinem Beispiel aufzeigen könnte.

          LastBoyScout

          P.S. gibt es eine einfache Möglichkeit, seine Scripte auf die Kompatibilität mit PHP5 hin zu Testen?
          (Ich Arbeite übrigens mit PHPEdit)

          Kommentar


          • #6
            Anhand der vielen Zugriffe in so kurzer Zeit, scheint das Thema doch auch für andere sehr Interessant, aber gleichzeitig auch schwieriger zu sein, als ursprünglich von mit angenommen!

            [COLOR=darkred]Gibt es den keinen, der sich mit XML auskennt und uns Neulingen die vorgehensweise, anhand eines gut Kommentierten Scriptes für die beigefügte Beispiels xml näher bringen könnte?[/COLOR]

            Bin für jeden konstruktiven Beitrag Dankbar!

            Kommentar


            • #7
              Such dir halt eine andere XML-Pasing Klasse. Das Prinzip von XML muss man dir aber nicht erklären, oder? Falls doch: Öffne deine XML-Datei mal mit Firefox/IE, das sollte dann selbsterklärend sein.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                XML und Php

                Tag Tag

                beschäftige mich auch schon eine weile mit Xml und php sowie weiter Sprachen (VB, VBS, JS). Eigentlich ganz simple. Um dir den Einstieg zu erleichtern schau dir mal diese Seite an. Da steht eigentlich alles was du für den Zugriff auf xml mit Php wissen mußt.

                http://www.php.net/manual/de/book.domxml.php

                Des wichtigste ist das du ein DTD schema erstellst sonst funzt, des ganze nicht.
                Bsp

                <!DOCTYPE Cafeteria[
                <!ELEMENT Ueberuns (tagesmenue, standartmenue, sweetes, cafe, sonstiges)>
                <!ATTLIST Ueberuns
                id ID #REQUIRED
                >......

                ]>


                <Cafeteria>
                <Ueberuns id = "ueberuns">
                <tagesmenue
                id = "tagesmenue"
                mon = "txt"
                die = "txt"
                mit = "txt"
                don = "txt"
                fre = "txt"
                sam = "txt"
                son = "txt">
                </tagesmenue>
                </Ueberuns>

                </Cafeteria>

                !!! die Wohlgeformtheit des Dokumentes ist ultrawichtig, sonst nimmt php4-5 keine Verbindung auf:!!!!

                Die DTD darf nicht in einer externen Datei ausgelagert werden.

                Und um mit get_element_by_Id("ueberuns") zu arbeiten muß die ID in der
                DT explezit deklariert sein.

                <!ATTLIST Ueberuns
                id ID #REQUIRED
                >......

                Eigentlich kannst du mit fast jeder Sprache auf Xml zugreifen, des macht die Sache so interesant.

                Tip: Verschlüssel deine Eingaben sonst kann sie jeder lesen.
                Tip2: Die Dateiendung einfach auf *.php ändern, dann ist es noch schwerer die Datei zu lesen, wenn du ein Xml Dokument mit der Standartendung läßt, kann wie in den Beiträgen oben erleutert jeder deine Datenbank anschauen.

                mfg
                knighthawk
                www.phoenix-global-web.de

                Kommentar


                • #9
                  Warum unbedingt eine DTD? Damit er getElementByID nutzen kann? Schau dir mal Xpath an. Ansonsten kann es natürlich schon sinnvoll sein, das Xml erstmal zu validieren bevor es weitergeht.

                  Dom ist wohl auch in PHP4 implementiert, wenn auch nicht so schön wie in PHP5 (<- sind da viele andere Skripte die evtl. umgeschrieben werden müssten? Ich würd den Umstieg machen).

                  Für PHP4: http://de.php.net/manual/de/ref.domxml.php

                  Falls nach bestimmten Elementen gesucht werden muss -> Xpath - frag mich aber nicht, wie man damit unter PHP4 arbeitet.

                  Mit Xslt müsstest du dir dein Xml dann schön in ein SQL-Statement transformieren lassen können. Also die Arbeit, das Xml direkt in PHP Element für Element auszulesen und daraus ein Statement zu zimmern sollte auch nicht erforderlich sein.

                  Ansonsten:
                  Um in Xml einzusteigen, würd ich mir erstmal etwas einfachere Xml-Dokumenten vorknöpfen - für nen Einsteiger ist das gezeigte hier wohl doch eher komplex und wenn du dann damit nicht vorwärts kommst, kommt schnell der Frust. Nimm erstmal einfache Xml's mit wenig verschachtelten Elementen (am besten erstmal nur eine Ebene) und lerne damit das Arbeiten damit zu verstehen.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar

                  Lädt...
                  X