Heim  >  Artikel  >  Backend-Entwicklung  >  php生成xml文件的3种方法效率比较

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

WBOY
WBOYOriginal
2016-07-25 09:08:15953Durchsuche
  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要快一些。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn