Mailinglisten-Archive |
Hallo Ralf, Ralf Eggert wrote: > Die Datei ist ca. 39 MB gross, Tendenz steigend, und wird von einem > Partner angeliefert. D.h. ich habe keinen Einfluss auf die Struktur. das scheint mir fast zuviel, um "direkt" damit zu arbeiten, also z.B. bestimmte Datensätze über ein Webinterface abfragen und anzeigen. [...] > 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> [...] Also so wie hier: http://www.media-palette.de/xml-line-0-4-3-6-alpha/examples/get_record.php [...] > Meine Idee ist, zuerst die gesamte Datei zu durchlaufen und nur > bestimmte Elemente in einem Zwischenformat zu speichern. Dieses > Zwischenformat wird dann weiter verarbeitet. Über das id-Attribut könnte man natürlich bequem auf einzelne "Datensätze" zugreifen. > 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 Ja, die ersten beiden Beispiele zeigen ja, wie die Parserfunktionen arbeiten. In meiner Klasse werden genau diese Funktionen genutzt. > > 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(). Für solche Abfragen könnte man die Datei zweimal durchlaufen. Phase 1: name "Hans" suchen http://www.media-palette.de/tools/xml-line/tutorial/index.html#kap2 Dann aus dem Ergebnisarray den Datensatz ermitteln und anschließend den kompletten Datensatz anhand des Pfades einlesen. Viele Grüße Peter
php::bar PHP Wiki - Listenarchive