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