首頁  >  文章  >  後端開發  >  php產生xml檔的3種方法效率比較

php產生xml檔的3種方法效率比較

WBOY
WBOY原創
2016-07-25 09:08:15948瀏覽
  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要快一些。



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn