2010-12-03 90 views
3

我已经编写了一个小函数来使用simpleXML读取XML文件,并使用Pear Benchmark迭代来计时。我读过simpleXML和DOM将整个XML文件放到内存中,这可能会在大文件上创建大量开销。从XML中检索值到PHP数组中

下面的函数是一个相对较小的尺寸,我只从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

XML解析器模块可以是不需要的一些外部库是更好的选择,但它需要一个有点头脑转变。他们的回报是数据永远不会被加载到内存中。

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

这个模块不是面向对象看起来令人生畏,但是xml_set_object减轻了这一点。