当前位置:Gxlcms > PHP教程 > php生成xml文件的3种方法效率比较

php生成xml文件的3种方法效率比较

时间:2021-07-01 10:21:17 帮助过:13人阅读

  1. private function directWriteXml(&$data){
  2. $xmltext='';
  3. $xmltext .='';
  4. $xmltext .='';
  5. $loop=count($data);
  6. foreach ($data as $d){
  7. $xmltext .=" ";
  8. }
  9. $xmltext .='';
  10. $xmltext .='';
  11. return $xmltext;
  12. }
  13. private function useDomDocument(&$data){
  14. // 创建一个XML文档并设置XML版本和编码。。
  15. $dom=new DomDocument('1.0', 'utf-8');
  16. // 创建根节点
  17. $detail01 = $dom->createElement('Detail');
  18. $dom->appendchild($detail01);
  19. foreach ($data as $d) {
  20. $row = $dom->createElement('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );
  21. $detail01->appendchild($row);
  22. }
  23. return $dom->saveXML();
  24. }
  25. private function useSimpleXML(&$data){
  26. // 创建一个XML文档并设置XML版本和编码。。
  27. $string = <<
  28. XML;
  29. $xml = simplexml_load_string($string);
  30. foreach ($data as $d) {
  31. $xml->addChild('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );
  32. }
  33. return $xml->asXML(); ;
  34. }
  35. ?>

调用时每个都加上大数循环操作,并记录时间。

  1. $loop=10000;
  2. $xml='';
  3. switch($_GET['id']){
  4. case 1:
  5. $ts=$this->microtime_float();
  6. for( $i=0; $i<$loop; $i++)
  7. $xml=$this->directWriteXml($depdata);
  8. $te=$this->microtime_float();
  9. $t=$te-$ts;
  10. $this->assign('times',$t);
  11. $this->assign('method','直接写');
  12. break;
  13. case 2:
  14. $ts=$this->microtime_float();
  15. for( $i=0; $i<$loop; $i++)
  16. $xml=$this->useDomDocument($depdata);
  17. $te=$this->microtime_float();
  18. $t=$te-$ts;
  19. $this->assign('times',$t);
  20. $this->assign('method','DomDocument');
  21. break;
  22. case 3:
  23. $ts=$this->microtime_float();
  24. for( $i=0; $i<$loop; $i++)
  25. $xml=$this->useSimpleXML($depdata);
  26. $te=$this->microtime_float();
  27. $t=$te-$ts;
  28. $this->assign('times',$t);
  29. $this->assign('method','SimpleXML');
  30. break;
  31. }
  32. echo $xml;
  33. ?>

实测结果:直接写最快,耗时只有其他方式的1/3左右。而其他2种方法差不多,相比之下SimpleXML要快一些。

人气教程排行