protected function getNode(\DOMElement $node)
{
switch ($this->getType($node)) {
case 'object':
$result = new \stdClass();
/** @var \DOMElement $child */
foreach ($this->getChildElements($node) as $child) {
$result->{$this->getName($child)} = $this->getNode($child);
}
break;
case 'array':
$result = [];
foreach ($this->getChildElements($node) as $child) {
$result[] = $this->getNode($child);
}
break;
case 'number':
return (double) $node->nodeValue;
case 'boolean':
return $node->nodeValue === 'true' ? true : false;
case 'null':
return null;
default:
return $node->nodeValue;
}
return $result;
}