将多维 SimpleXML 转换为关联数组

Converting multidimensional SimpleXML to associative array

我有一个嵌套的多维 XML 字符串,我进入 SimpleXML。我想将其转换为关联数组。 php.net 中列出的示例无法正常工作,或者它们仅适用于平面 xml。

这比 SimpleXML 手册页上的示例效果更好,但在其当前形式中它丢弃了属性。

function xml2array($xmlObject, $out = array())
{
    foreach ($xmlObject as $node) {
        if ($node->count() > 0) {
            $out[$node->getName()][] = xml2array($node);
        } else {
            $out[$node->getName()] = (string)$node;
        }
    }
    return $out;
}