从XML中提取值到PHP数组

3
我写了一个小函数,使用simpleXML读取XML文件,并使用Pear Benchmark Iterate对其进行计时。我知道simpleXML和DOM会将整个XML文件放入内存中,这可能会在大型文件上产生很多开销。
下面的函数相对较小,我只从XML文件中提取了10个值。
对于这个函数的迭代(xml文件大小:200kb),平均需要2.5秒才能完成。 有人可以建议一种使用PHP XMLparser、相关类或其他高效解析XML到数组的方法吗? SimpleXML版本
function getItems($file_id, $item_count=5)
{
    switch ($file_id)
    {
        case '1':
        $file = "http://xml_file.xml";

        if ($xml = simplexml_load_file($file)) 
        {
            $i=0;
            foreach ($xml->info as $info) 
            {
                if ($i < $item_count)
                {
                    $var[] = array(
                        "id"  =>  (string)$info->id,
                        "name" => (string)$info->name); 
                }
                $i++;   
            }
            return $var;
        }
    }
}
1个回答

1

XML解析器模块可能是更好的选择,不需要外部库,尽管需要一些思维转换。回报是数据永远不会完全加载到内存中。

简而言之,您需要以树形下降方式处理XML文档,并通过处理程序记录树中的位置,因为打开和关闭标记通过处理程序向您报告。

这个模块不是面向对象的可能看起来令人生畏,但xml_set_object可以缓解这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接