Parse the input SimpleXmlElement into an array.
SimpleXmlElement $node xml to parse:
array
private function parseXml($node) {
$data = array();
if ($node
->attributes()) {
foreach ($node
->attributes() as $attrkey => $attr) {
$data['@' . $attrkey] = (string) $attr;
}
}
foreach ($node
->children() as $key => $subnode) {
if ($subnode
->count()) {
$value = $this
->parseXml($subnode);
}
elseif ($subnode
->attributes()) {
$value = array();
foreach ($subnode
->attributes() as $attrkey => $attr) {
$value['@' . $attrkey] = (string) $attr;
}
$value['#'] = (string) $subnode;
}
else {
$value = (string) $subnode;
}
if ($key === 'item') {
if (isset($value['@key'])) {
$data[(string) $value['@key']] = $value['#'];
}
else {
$data['item'][] = $value;
}
}
elseif (array_key_exists($key, $data)) {
if (false === is_array($data[$key]) || false === isset($data[$key][0])) {
$data[$key] = array(
$data[$key],
);
}
$data[$key][] = $value;
}
else {
$data[$key] = $value;
}
}
return $data;
}