barno: XML parsen

Hallo,

ich muss ziemlich große xml-Files (>1,8 GB) mit PHP parsen. Hat hier jemand Erfahrung im Parsen von solch großen Files? Mein Ansatz ist, die XML-Reader Library von PHP zu nutzen, SimpleXML dürfte das wohl nicht packen.

Für Tips im Anfangsstadium meiner Entwicklung wäre ich dankbar.

Viele Grüße
Barno

  1. Hi,

    ich muss ziemlich große xml-Files (>1,8 GB) mit PHP parsen. Hat hier jemand Erfahrung im Parsen von solch großen Files? Mein Ansatz ist, die XML-Reader Library von PHP zu nutzen, SimpleXML dürfte das wohl nicht packen.

    Ich glaube in so einem Fall spielt es keine Rolle ob XML oder sonst was.
    Bei extrem grossen Files splitte ich diese erst in kleinere Brocken und parse die dann. Aber mal sehen was die anderen sagen, ob es auch anders geht.

    Mike

    1. Hello,

      Ich glaube in so einem Fall spielt es keine Rolle ob XML oder sonst was.
      Bei extrem grossen Files splitte ich diese erst in kleinere Brocken und parse die dann. Aber mal sehen was die anderen sagen, ob es auch anders geht.

      ich würde sagen, es kommt darauf an, was während/nach dem Parsing geplant ist. Alles in den Speicher zu Pumpen (Stichwort: DOM) ist sicherlich keine gute Idee, das dürfte dann nochmal jenseits der 1,8GB liegen. Ein "Live"-Parsing mittels SAX hingegen könnte funktionieren, aber eben nur dann, wenn ausschließlich bestimmte Teilinformationen relevant sind.

      MfG
      Rouven

      --
      -------------------
      sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
      I will never understand why Germans feel the need to kill trees  --  Arbeitskollege aus UK zum Thema ob eine Dokumentation elektronisch oder auf Papier ausgeliefert wird
      1. Hallo,

        »»liegen. Ein "Live"-Parsing mittels
        »»SAX hingegen »»könnte funktionieren, aber eben nur dann, wenn ausschließlich »»bestimmte Teilinformationen relevant sind.

        ich habe mit dem XML-Reader nun zahlreiche Experimente gemacht und bin hinlänglich begeistert. Sehr schnell und da ein Stream-Parsen möglich ist, bleibt auch der Speicherbedarf gering.

        Daten parsen, verarbeiten, ggf. Arrays oder ähnliches löschen und so fort. Ich werde berichten, wie sich das Ganze bei einer 1,9 GB großen XML-Datei gemacht hat.

        Gruss
        Barno

  2. Hi barno,

    Für Tips im Anfangsstadium meiner Entwicklung wäre ich dankbar.

    Habe mal etwas gegoogelt gerade, XMLReader scheint prinzipiell der richtige Ansatz zu sein, folgender Artikel könnte interessant für dich sein:
    Importing huge XML files using PHP5 - efficiently and conveniently

    Viele Grüße,
      ~ Dennis.

    1. Hallo Dennis,

      Importing huge XML files using PHP5 - efficiently and conveniently

      das ist genau das, was ich gesucht habe. Ich habs das Skript mal bisschen umgebaut und im Kleinen getestet. Das hat tadellos funktioniert. Muss mal sehn, wie sich das bei den großen Dateien verhält.

      Es ist so, dass nicht alle Informationen der einzelnen Datensätze relevant sind, vielleicht 20%, eher weniger. Auf die Ergebnisse werden hauptsächlich Stringoperationen angewendet und dann direkt in eine Datenbank geschaufelt.

      Soweit die Theorie.

      Viele Grüße und schönes Wochenende noch
      Barno