ich hab bis jetzt immer wenn es um xml-daten auslesen ging mit sax gearbeitet...das klappte immer einwandfrei...
aber ich wollte mich mit php5 jetzt aber mal an dom heranwagen...bin aber gleich beim ersten versuch kläglich gescheitert...
ich komme beim aufführen folgenes scripts in eine art endlosschleife...und ich hab leider keine ahnung wieso...
der code ist so gut wie aus dem buch "php5 - die neuerungen" übernommen...geht aber einfach net...
Code:
- Code: Select all
<?php
$xmlstr = '<?xml version="1.0"?>
<musik>
<cd>
<titel>Mornig View</titel>
<band land="USA">Incubus</band>
<laenge>58:46</laenge>
<preis>14,96</preis>
</cd>
<cd>
<titel>S.I.E.N.C.E</titel>
<band land="USA">Incubus</band>
<laenge>52:23</laenge>
<preis>9,49</preis>
</cd>
<cd>
<titel>Le chemin</titel>
<band land="P">Kyo</band>
<laenge>4:24</laenge>
<preis>9,69</preis>
</cd>
</musik>';
$dom = new domDocument();
$dom->preserveWhiteSpace = false;
$dom->loadxml($xmlstr);
$cds = $dom->getElementsByTagName('cd');
foreach($cds as $cds_tmp){
foreach($cds_tmp->childNodes as $cds_childs) echo $cds_childs->nodeValue.'<br>';
echo '-----------------<br>';
}
?>
komischer weise geht aber dieses script..:
Code:
- Code: Select all
<?php
$xmlstr = '<?xml version="1.0"?>
<musik>
<cd>
<titel>Mornig View</titel>
<band land="USA">Incubus</band>
<laenge>58:46</laenge>
<preis>14,96</preis>
</cd>
<cd>
<titel>S.I.E.N.C.E</titel>
<band land="USA">Incubus</band>
<laenge>52:23</laenge>
<preis>9,49</preis>
</cd>
<cd>
<titel>Le chemin</titel>
<band land="P">Kyo</band>
<laenge>4:24</laenge>
<preis>9,69</preis>
</cd>
</musik>';
$dom = new domDocument();
$dom->preserveWhiteSpace = false;
$dom->loadxml($xmlstr);
$cds = $dom->getElementsByTagName('cd');
foreach($cds as $cds_tmp){
$tmp = $cds_tmp->childNodes;
foreach($tmp as $cds_childs) echo $cds_childs->nodeValue.'<br>';
echo '-----------------<br>';
}
?>
blos wieso geht das...und das andere nich..?
den die einzige änderung ist das die "$cds_tmp->childNodes" in die variable "$tmp" kopiert hab...
sollte es nicht eigentlich keinen unterschied machen ob ich nun auf die variablen des objektes "$cds_tmp" direkt zugreife oder sie in eine neue variable kopieren und dann benutze..?
das komische daran ist auch noch das beide scripts unter linux einwandfrei laufen…
das gleiche gilt für die beispiel-scripts von http://php5.bitflux.org/phpconf2004/slide_74.php ...
ich benutzte den neusten win-apache(16.07.2004) mit php5 von euch…
hat jemand ne idee was das sein könnte..?