欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-12 18:53:20
...
  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要快一些。