<?php
function arrayToXml($data, \SimpleXmlElement $element, $parent = null)
{
foreach ($data as $key => $value) {
if (is_array($value) || $value instanceof \Traversable) {
if (!is_numeric($key)) {
if (count($value) > 0 && isset($value[0])) {
arrayToXml($value, $element, $key);
} else {
$subnode = $element->addChild($key);
arrayToXml($value, $subnode, $key);
}
} else {
$subnode = $element->addChild($parent);
arrayToXml($value, $subnode, $parent);
}
} else {
if (!is_numeric($key)) {
if (substr($key, 0, 1) === '@') {
$element->addAttribute(substr($key, 1), $value);
} elseif ($key === 'value' and count($data) === 1) {
$element[0] = $value;
} elseif (is_bool($value)) {
$element->addChild($key, intval($value));
} else {
$element->addChild($key, htmlspecialchars($value, ENT_QUOTES));
}
} else {
$element->addChild($parent, htmlspecialchars($value, ENT_QUOTES));
}
}
}
}
$data = array();
$doc = new \SimpleXMLElement('<resource href="/"/>');
arrayToXml($data, $doc);
echo $doc->asXml();
//$xml = new \SimpleXMLElement('<resource href="/"><x><0>test</0></x></resource>');
//echo $xml->x;
preferences:
36.18 ms | 402 KiB | 5 Q