Mailinglisten-Archive |
Hallo Peter, > was heißt groß? : 1 MB, 200 MB? Die Datei ist ca. 39 MB gross, Tendenz steigend, und wird von einem Partner angeliefert. D.h. ich habe keinen Einfluss auf die Struktur. > Was heißt: lesend darauf zugreifen? : Wenige Daten herausfischen? Viele > Daten auslesen? Ich möchte jeweils bestimmte Daten herausfischen und dann weiter verarbeiten. Dafür wird es mehrere Schritte geben, die jeweils bestimmte Bereiche der Struktur verarbeiten. > Wie komplex ist die Datenstruktur? Etwas vereinfacht sieht sie so aus: <?xml version="1.0" encoding="ISO-8859-1"?> <list date="2005-11-25 05:31:37" language="de" num="12168"> <p id="2"> <name>Hans</name> <address>Gartenstrasse 17</address> <geoID>1</geoID> <country>Deutschland</country> <images> <image num="1"> <imageURL>http://www.domain.de/img/hans.jpg</imageURL> <thumbURL>http://www.domain.de/img/hans_t.jpg</thumbURL> <title>Bild von Hans</title> </image> </images> </p> <p id="4"> <name>Peter</name> <address>Parkstrasse 198</address> <geoID>2</geoID> <country>Schweiz</country> <images> <image num="1"> <imageURL>http://www.domain.de/img/peter.jpg</imageURL> <thumbURL>http://www.domain.de/img/peter_t.jpg</thumbURL> <title>Bild von Hans</title> </image> </images> </p> </list> Die Datei ist also nicht sonderlich tief verschachtelt, enthält aber z.B 12168 "p"-Elemente. Mein "vereinfacht" oben bedeutet, dass ich einige Kindelemente herausgenommen habe, die alle ähnlich einfach strukturiert sind. > Sollen die Daten sofort verarbeitet werden, oder ist es möglich, die > XML-Datei "langsam" auszulesen und die benötigten Daten in ein > Zwischenformat (z.B. MySQL-Tabelle) zu bringen, und damit weiterzuarbeiten? Meine Idee ist, zuerst die gesamte Datei zu durchlaufen und nur bestimmte Elemente in einem Zwischenformat zu speichern. Dieses Zwischenformat wird dann weiter verarbeitet. > XSLT, je nachdem, was man vorhat. > Als Vereinfachung von SAX meine Parser-Klasse: > http://www.media-palette.de/tools/xml-line/ (neue Version ist schneller) > Wenn die Verarbeitung schnell gehen muss, würde ich einen speziellen > SAX-Parser schreiben, wie es im PHP-Manual gezeigt wird. Eine schnelle Verarbeitung wäre schon wünschenswert. Welche Stelle im PHP Manual meinst du genau? Diese hier: http://www.php.net/manual/de/ref.xml.php XMLReader soll sich ja besser für grosse XML Dateien eignen als SAX, aber das $reader->read() ist ja sehr umständlich. Wenn ich nur <name>Hans</name> lesen möchte, benötige ich alleine drei Mal ein $reader->read(). Und $reader->next() funktioniert bei der Datei nicht so richtig, weil er erst das "list"-Element liest und bei $reader->next() dann fertig ist. Schön wäre es, wenn ich von "p"-Element zu "p"-Element springen könnte. Gruss, Ralf
php::bar PHP Wiki - Listenarchive