Facebook Button Twitter Button YouTube Button RSS Button

IT-Runde

XML-Datei in MySQL-Datenbank schreiben

  • XML-Datei in MySQL-Datenbank schreiben

    Heute mal wieder ein kleines Codeschnipsel von mir :D:
    Heutzutage gibt es viele gute Softwarewelche sehr flexibel mit eigenen Scripten zusammen arbeiten. Als Schnittstelle dienen dort meistens ganz einfache XML-Dateien welche von der Software oder anderen Programmen erzeugt werden. Diese beinhalten dann verschiedene Werte und müssen für die Weiterverarbeitung an einem zentralen Platz gespeichert werden. Was eignet sich da besser als eine Datenbank? ;). Einmal eingespeichert kann man die Daten schnell und einfach per SQL-Befehl abarbeiten und ersparrt sich dadurch einiges an Rechenleistung beim Lesen der .xml-Datei. Aber wie verarbeitet man denn nun die Datei, damit man diese einfach in die Datenbank schreiben kann? Hier habe ich mal eine Beispiel-Datei namens “Artikel.xml” für euch erstellt:

    1
    2
    3
    4
    5
    6
    7
    8
    
    <?xml version="1.0" encoding="utf-8"?>
    <Artikelstamm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Artikel id="1" artnummer="1000" bezeichnung="Testprodukt1" />
      <Artikel id="2" artnummer="11000" bezeichnung="Testprodukt2" />
      <Artikel id="3" artnummer="11001" bezeichnung="Testprodukt3" />
      <Artikel id="4" artnummer="11002" bezeichnung="Testprodukt4" />
      <Artikel id="5" artnummer="11003" bezeichnung="Testprodukt5" />
    </Artikelstamm>

    Wie ihr seht ein ganz normaler xml-Aufbau mit verschiedenen Parametern in den einzelnen Datensätzen, welche wir nun versuchen müssen in die Datenbank zu bekommen. Die einzige Funktion welche man für den Aufruf der Datei zum verarbeiten kennen muss ist simplexml_load_file($filename). Die Funktion kann man dann ganz einfach einer Variable (z.B. $xml) zuweisen und mit ihr arbeiten.

    So würde der Code dann aussehen:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    <?php
     
    $filename = './itrunde/Artikel.xml';
     
    if(file_exists($filename))
    {
    	$xml = simplexml_load_file($filename);
    	if($xml)
    	{
    		foreach($xml->Artikel AS $article)
    		{
     
    		$abfrage = "INSERT INTO xml_itrunde (id, artikelnummer, bezeichnung)
                                    VALUES ('".$article['id']."', '".$article['artnummer']."', '".$article['bezeichnung']."')";
    		$ergebnis = mysql_query($abfrage);
    		}
    	}
    }
     
    ?>

    Man sieht sofort, dass es eigentlich relativ easy ist die Attribut-Inhalte in die Datenbank zu schmeißen. Vergessen dürft ihr natürlich nicht die Datenbank-Verbindung herzustellen und die (hier in meinem Beispiel) drei Spalten in der Tabelle xml_itrunde einzutragen ;). Meinen einfachen Codeschnipsel kann man auf jede XML-Datei anwenden, ersparrt bestimmt so einigen von euch eine Menge Sucharbeit. Wichtig wäre noch zu wissen, dass die Zeichenkodierung von der XML-Datei utf-8 sein sollte, sonst kann es mit dem Script zu Problemen kommen (selbst getestet :D). Standardmäßig sollte jede Software jedoch utf-8 ausgeben, somit sollte es zu keinen weiteren Problemen kommen.

    Wenn euch die Datei z.B. wie bei mir alle 30min aktualisiert wird, solltet ihr anstatt des INSERT-Befehles die Tabelle Updaten oder diese vorher per TRUNCATE-Befehl leeren und dann erst neu beschreiben lassen. Per Cron-Job ist es dann kein Problem mehr das Script alle halbe Stunde automatisch ausführen zu lassen!

    Viel Spaß beim ausprobieren, Fragen werden gerne beantwortet! 😀



  1. #1 BlackChester
    14.02.2011 um 20:24 Uhr

    und jetzt mach das ganze mal in Java und du weißt was ich momentan fürn Problem hab >.>

    Post ReplyPost Reply
  2. #2 Christian
    14.02.2011 um 20:42 Uhr

    Wodran scheitert es denn? 😉 Kannst uns ja deinen bisherigen Code posten, damit wir dir helfen können bzw. nachher den fertigen Code präsentieren, damit die Leser nicht mehr so lange suchen müssen ;).

    Post ReplyPost Reply
  3. #3 digilist
    14.02.2011 um 23:00 Uhr

    http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html

    Isn bisschen mehr Code, klar… aber wo ist das Problem? Und zum speichern in die DB gibts auch gute Anbindung (z.B. JDBC).

    Post ReplyPost Reply
  4. #4 BlackChester
    14.02.2011 um 23:26 Uhr

    jetz ma nich so’n stress hier xDD
    geht schon xD

    Post ReplyPost Reply
  5. #5 Francesco
    14.02.2011 um 23:30 Uhr

    Vor genau einem Monat stande ich vor diesem Problem! Im Internet gibt es fast nichts dadrüber (Zumindest nicht so einen einfachen und genialen Codeschnipsel wie hier :D), dankeschön!

    Hatte eigentlich schon aufgegeben, kann jetzt aber wieder am alten Projekt weiterarbeiten 😛

    Post ReplyPost Reply
Kommentar schreiben

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.