如何高效地将 SimpleXML 对象转换为数组并保留属性?

Mary-Kate Olsen
发布: 2024-10-27 08:11:02
原创
199 人浏览过

How to Convert a SimpleXML Object to an Array Efficiently and Preserve Attributes?

将 SimpleXML 对象转换为数组:一种更有效的方法

将 SimpleXML 对象转换为数组对于操作 XML 数据非常有用更有效。然而,第一个问题中描述的方法涉及到 JSON 的编码和解码,可能会很麻烦。这是实现相同目的的改进方法:

function xmlstring2array($string) {

$xml = simplexml_load_string($string);
return xml2array($xml);
登录后复制

}

function xml2array($xmlObject) {

foreach ((array) $xmlObject as $index => $node) {
    if (is_object($node)) {
        $out[$index] = xml2array($node);
    } else {
        $out[$index] = $node;
    }
}
return $out;
登录后复制

}

这个修改后的函数 xml2array() 递归地迭代 SimpleXML 对象,将节点转换为数组,同时保留其结构。它避免了 JSON 编码和解码的开销,使其更加高效和健壮。

原始函数在将 XML 转换为数组时丢失了属性。但是,您可以通过在 xml2array() 循环中使用 SimpleXML 的 attribute() 方法来保留属性:

foreach ((array) $xmlObject as $index => $node) {

...
if (is_object($node)) {
    $out[$index] = xml2array($node);
} else if ($node instanceof SimpleXMLElement) {
    $attrs = $node->attributes();
    if (count($attrs) > 0) {
        $out[$index] = (array) $node;
        foreach ($attrs as $attrName => $attrValue) {
            $out[$index][$attrName] = (string) $attrValue;
        }
    } else {
        $out[$index] = (string) $node;
    }
}
...
登录后复制

}

通过合并这些改进,您可以更有效地将 SimpleXML 对象转换为数组,同时保留结构和属性。

以上是如何高效地将 SimpleXML 对象转换为数组并保留属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!