当前位置:首页 > PHP教程 > php应用 > 列表

PHP DOMDocument实现XML读写操作

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-20 13:31:51 浏览: 评论:0 

在php中操作xml文档我们可以直接调用DOMDocument类或使用simplexml_load_string类来操作,这些都不需要加载算是内置函数了,我们直接使用.

PHP脚本读取XML最原始,最笨的方法,代码如下:

  1. $doc = new DOMDocument();  
  2.     
  3. $doc->load('test.xml');  
  4.     
  5. $rows = $doc->getElementsByTagName("ds");  
  6.     
  7. $d = array();  
  8.     
  9. $i = 0;  
  10. foreach($rows as $row)  
  11. {  
  12.    $web     = $row->getElementsByTagName('web');  
  13.    $webUrl  = $row->getElementsByTagName('webUrl');  
  14.    $d[$i]['web']    = $web->item(0)->nodeValue;  
  15.    $d[$i]['webUrl'] = $webUrl->item(0)->nodeValue;  
  16.    $i++;  
  17. }  
  18. //开源代码phpfensi.com 
  19. print_R($d); 

简单,容易,速度快,代码如下:

  1. $xmlData = file_get_contents('test.xml');  
  2.     
  3. $xml = simplexml_load_string($xmlData);  
  4.     
  5. $xmlArr = objectToArray($xml); 

objectToArray函数代码如下:

  1. function objectToArray($object)  
  2. {    
  3.    if(!$objectreturn '';  
  4.    $result = array();    
  5.    $object = is_object($object) ? get_object_vars($object) : $object;    
  6.    foreach ($object as $key => $val) {    
  7.        $val = (is_object($val) || is_array($val)) ? objectToArray($val) : $val;    
  8.        $result[$key] = $val;    
  9.    }    
  10.    return $result;    

上面讲到了读取xml,下面再介绍写xml实例,代码如下:

  1. $arr = array(  
  2.          array('id'=>1,'web'=>'好脚本','webUrl'=>'http://www.phpfensi.com'),  
  3.          array('id'=>2,'web'=>'PHP脚本','webUrl'=>'http://www.phpfensi.com/'),  
  4.          array('id'=>3,'web'=>'JavaScript脚本','webUrl'=>'http://www.phpfensi.com/'),  
  5.          array('id'=>4,'web'=>'js脚本','webUrl'=>'http://www.phpfensi.com/'),  
  6.          array('id'=>5,'web'=>'PHP脚本示例','webUrl'=>'http://www.phpfensi.com/'),  
  7.          array('id'=>5,'web'=>'JavaScript脚本示例','webUrl'=>'http://www.phpfensi.com/')  
  8.          );  
  9. /*使用dom生成xml,注意生成的xml中会没有空格。*/ 
  10. $dom=new DOMDocument('1.0','utf-8');  
  11.     
  12. $path"logs/test.xml";  
  13.     
  14. $data=$dom->createElement('data');  
  15.     
  16. $dom->appendChild($data);  
  17.     
  18. foreach($arr as $v)  
  19. {  
  20.     $ds = $dom->createElement('ds');  
  21.     
  22.     $id = $dom->createAttribute('id');   
  23.         
  24.     $id->nodeValue = $v['id'];  
  25.      
  26.     $ds->setAttributeNode($id);  
  27.     
  28.     $data->appendChild($ds);  
  29.     
  30.     foreach($v as $kk=>$vv)  
  31.     {  
  32.        ${$kk} = $dom->createElement($kk);   
  33.                 
  34.        $value$dom->createTextNode($vv);  
  35.         
  36.        ${$kk}->appendChild($value);  
  37.     
  38.        $ds->appendChild(${$kk});  
  39.     
  40.     }  
  41. }  
  42.     
  43. $dom->saveXML();  
  44.     
  45. $dom->save($path); 

Tags: DOMDocument XML读写操作

分享到: