phpbar.de logo

Mailinglisten-Archive

[php] SimpleXML und Namespace

[php] SimpleXML und Namespace

Harald Hanek developer_list at yahoo.de
Sam Apr 15 04:07:18 CEST 2006


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