Mailinglisten-Archive |
Hallo nochmal, irgendwie wirkt das mit XMLReader doch sehr umständlich. Hier die vereinfachte XML Datei: <?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> Und hier ein Auszug aus dem Skript, mit dem ich das Attribut "id" aus dem "p"-Element sowie die Werte für "geoID" und "country" ausgeben möchte: while ($reader->read()) { switch ($reader->nodeType) { case (XMLREADER_ELEMENT): if ($reader->localName == 'p') { do { $id = $reader->getAttribute('id'); do { $reader->read(); } while ($reader->localName != 'geoID'); $reader->read(); $geoID = $reader->value; do { $reader->read(); } while ($reader->localName != 'country'); $reader->read(); $country = $reader->value; echo $id.': geoID = '.$geoID.' > '.$country.'<br>'; } while($reader->next('p')); } } } Ist das der richtige Ansatz oder geht das auch einfacher? Gruss, Ralf
php::bar PHP Wiki - Listenarchive