Mailinglisten-Archive |
Hallo,
irgendwie habe ich ein Brett vor dem Kopf. Und zwar möchte ich einen XML
String in ein Array konvertieren. simplexml_load_string() bietet ja die
Möglichkeit, XML Strings zu laden und daraus ein SimpleXMLElement zu
erstellen. Nun möchte ich daraus ein Array konvertieren.
Hier mal meine Klasse ohne Kommentare und Eingabevalidierungen:
class Travello_Xml
{
protected $_xmlObj;
public function __construct($xmlString = false)
{
$this->_xmlObj = @simplexml_load_string($xmlString);
}
public function convertToArray()
{
$xmlArray = $this->asArray($this->_xmlObj);
return $xmlArray;
}
protected function asArray(SimpleXMLElement $xmlObj)
{
$xmlArray = array();
foreach ($xmlObj as $key => $value)
{
if (is_object($value))
{
$xmlArray[$key] = $this->asArray($value);
}
else
{
$xmlArray[$key] = $value;
}
}
return $xmlArray;
}
}
Wenn ich nun die Klasse mit dem folgenden String füttere
<config><option><foo>bar</foo><bar>foo</bar></option></config>
und die convertToArray() Methode aufrufe, erhalte ich aber nicht das
gewünschte Ergebnis:
Array
(
[option] => Array
(
[foo] => bar
[bar] => foo
)
)
Stattdessen erhalte ich:
Array
(
[option] => Array
(
[foo] => Array
(
)
[bar] => Array
(
)
)
)
Ich glaube, ich habe entweder ein riesiges Brett vorm Kopf oder ich
mache einen grundlegenden Denkfehler. Kann mir jemand bitte einen Tipp
geben?
Danke und Gruß,
Ralf
php::bar PHP Wiki - Listenarchive