>  기사  >  백엔드 개발  >  PHP에서 XML 파일을 생성하는 세 가지 방법의 효율성 비교

PHP에서 XML 파일을 생성하는 세 가지 방법의 효율성 비교

WBOY
WBOY원래의
2016-07-25 09:08:15967검색
  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으로 문의하세요.