首页  >  文章  >  后端开发  >  php生成xml文件的3种方法效率比较

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

WBOY
WBOY原创
2016-07-25 09:08:15947浏览
  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. ';
  11. $xmltext .='
  12. ';
  13. return $xmltext;
  14. }
  15. private function useDomDocument(&$data){
  16. // 创建一个XML文档并设置XML版本和编码。。
  17. $dom=new DomDocument('1.0', 'utf-8');
  18. // 创建根节点
  19. $detail01 = $dom->createElement('Detail');
  20. $dom->appendchild($detail01);
  21. foreach ($data as $d) {
  22. $row = $dom->createElement('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );
  23. $detail01->appendchild($row);
  24. }
  25. return $dom->saveXML();
  26. }
  27. private function useSimpleXML(&$data){
  28. // 创建一个XML文档并设置XML版本和编码。。
  29. $string =
  30. XML;
  31. $xml = simplexml_load_string($string);
  32. foreach ($data as $d) {
  33. $xml->addChild('Row'," ID=\" {$d['id']} \" Name=\" {$d['name']}\" " );
  34. }
  35. return $xml->asXML(); ;
  36. }
  37. ?>
复制代码

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

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

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



声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn