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