Mailinglisten-Archive |
Hi, wie kann ich eine XML-Datei mit Namespace parsen, um daraus ein Array mit allen Attributen, etc. rauszuholen (rekursiv). Bei einem einfachen XML-Baum funktioniert das so: <?php $xml = simplexml_load_file('folders.xml'); print_r(simplexml2array($xml)); function simplexml2array($xml) { if(get_class($xml) == 'SimpleXMLElement') { $attributes = $xml->attributes(); foreach($attributes as $k => $v) { if($v) $a[$k] = (string) $v; } $x = $xml; $xml = get_object_vars($xml); } if(is_array($xml)) { if(count($xml) == 0) { if(isset($x) && $x != '') $a['cdata'] = (string) $x; if(isset($a)) $r['@'] = $a; return $r; } if(isset($a)) $r['@'] = $a; // Attributes foreach($xml as $key => $value) { $r[$key] = simplexml2array($value); } return $r; } return (string) $xml; } ?> Mein XML mit Namespace sieht so aus: <?xml version="1.0"?> <folders xmlns:dex="http://example.org"> <dex:folder name="seppi 1" /> <dex:folder name="seppi 2"> <dex:folder name="seppi 2.1" /> <dex:folder name="seppi 2.2" /> </dex:folder> </folders> Bin für jeden Ratschlag sehr dankbar. Grüße Harald
php::bar PHP Wiki - Listenarchive