将值从XML检索到PHP数组中

时间:2010-12-03 14:46:58

标签: php xml

我编写了一个小函数,用simpleXML读取XML文件,并使用Pear Benchmark Iterate计时。我已经读过simpleXML和DOM将整个XML文件放入内存中,这会对大型文件产生大量开销。

下面的函数是一个相对较小的大小,我只从XML文件中提取了10个值。

以下函数的迭代(xml filesize: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 个答案:

答案 0 :(得分:1)

XML Parser模块可能是更好的选择,不需要一些外部库,虽然它需要一点思维转变。他们的回报是数据永远不会完整地加载到内存中。

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

这个模块不是OO似乎令人生畏,但xml_set_object缓解了这一点。