当前位置:首页 > PHP教程 > php类库 > 列表

php实现的xml操作类

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-06 09:52:49 浏览: 评论:0 

这篇文章主要介绍了php实现的xml操作类,涉及PHP针对xml文件的创建、读取、节点操作等常用技巧,需要的朋友可以参考下。

本文实例讲述了php实现的xml操作类,分享给大家供大家参考,具体如下:

  1. <?php 
  2. /* 
  3. 使用方法: 
  4. $test=new xml(); 
  5. $test->new_xml('test.xml'); 
  6. $test->root('document'); 
  7. $test->append_root_node('book'); 
  8. $test->append_child_node('author','linage'); 
  9. $test->append_child_node('page',100); 
  10. $test->append_child_node('money','35 RMB'); 
  11. $test->append_root_node_end(); 
  12. $test->append_root_node('book','name','The"Web"Servers'); 
  13. $test->append_child_node('a u t ho"r','li n a g e'); 
  14. $test->append_child_node('page',100); 
  15. $test->append_child_node('money','35 RMB'); 
  16. $test->append_root_node_end(); 
  17. $test->display(); 
  18. $test->save(); 
  19. 生成的xml结果: 
  20. <?xml version="1.0" encoding="utf-8"?> 
  21. <document> 
  22. <book> 
  23. <author>linage</author> 
  24. <page>100</page> 
  25. <money>35 RMB</money> 
  26. </book> 
  27. <book name="TheWebServers"> 
  28. <author>li n a g e</author> 
  29. <page>100</page> 
  30. <money>35 RMB</money> 
  31. </book> 
  32. </document> 
  33. */ 
  34. class xml{ 
  35. var $version
  36. var $encoding
  37. var $start
  38. var $end
  39. var $filename
  40. var $xml_document
  41. var $root_start
  42. var $root_end
  43. var $rss_start
  44. var $rss_end
  45. function xml($ver='1.0',$encoding='GB2312'){ 
  46.  $this->version="<?xml version=/"{$ver}/" encoding=/"{$encoding}/" standalone=/"yes/" ?>"
  47.  $this->rss_start="<rss version=/"2.0/" xmlns:domxml=/"[url]http://xml.666life.com/rss/1.0[/url]/" xmlns:geo=/"[url]http://www.w3.org/2003/01/geo/wgs84_pos#[/url]/">"; 
  48.  $this->rss_end="</rss>"
  49. function new_xml($filename){ 
  50.  $this->filename=$filename
  51.  return true; 
  52. function root($element){ 
  53.  $element=$this->filter($element); 
  54.  if(isset($this->start) and isset($this->end)){ 
  55.  exit("error:Only one top level element is allowed in an XML document./r/n"); 
  56.  }else
  57.  $this->start="<$element>"
  58.  $this->end="</$element>"
  59.  $this->xml_document=$this->version."/n".$this->rss_start."/n".$this->start."/n"
  60.  return true; 
  61.  } 
  62. function append_root_node($title,$property=null,$pro_val=null){ 
  63.  $title=$this->filter($title); 
  64.  $property=$this->filter($property); 
  65.  $pro_val=$this->filter($pro_val); 
  66.  $property!=null?$pro_str=" $property=/"$pro_val/"":$property=null; 
  67.  $contents="<{$title}{$pro_str}>/n"
  68.  $this->xml_document.=$contents
  69.  $this->root_end="</$title>"
  70.  return true; 
  71. function append_root_node_end(){ 
  72.  $this->xml_document.=$this->root_end."/n"
  73.  return true; 
  74. function append_child_node($title='undefined',$contents='undefined',$property=null,$pro_val=null,$cddate=false){ 
  75.  isset($property)?$pro_str=" $property=/"$pro_val/"":$property=null; 
  76.  $title=$this->filter($title); 
  77.  $contents=$this->filter($contents,false); 
  78.  $property=$this->filter($property); 
  79.  $pro_val=$this->filter($pro_val); 
  80.  $cddate===false?$cddate=false:$cddate=true; 
  81.  if($cddate){ 
  82.  $contents="<{$title}{$pro_str}><!--[CDATA['/n$contents/n']]--></$title>/n"
  83.  }else
  84.  $contents="<{$title}{$pro_str}>$contents</$title>"
  85.  } 
  86.  $this->xml_document.=$contents."/n"
  87.  return true; 
  88. function display(){ 
  89.  header("Content-type: text/xml"); 
  90.  $xml=$this->xml_document.$this->end."/n".$this->rss_end; 
  91.  echo $xml
  92.  //return true; 
  93. function filter($sring,$replace_null=true){ 
  94.  $filter[]='"'
  95.  $filter[]="//"
  96.  $filter[]="/n"
  97.  $filter[]="/r"
  98.  $filter[]="/t"
  99.  $replace_null===true?$filter[]=" ":$replace_null=false; 
  100.  foreach ($filter as $val){ 
  101.  $sring=str_replace($val,'',$sring); 
  102.  } 
  103.  return $sring
  104. function encode(){ 
  105.  //you can add the convert encode function here or add other class to do that 
  106. function save(){ 
  107.  $this->xml_document=$this->xml_document.$this->end."/n".$this->rss_end; 
  108.  $handle=fopen($this->filename,'wb+'); 
  109.  $result=fwrite($handle,$this->xml_document); 
  110.  fclose($handle); 
  111.  if($result){ 
  112.  return true; 
  113.  }else
  114.  echo "error:can't write to files,maybe the access denied.try to chmod 777 the directory?"
  115.  return false; 
  116.  } 
  117. }

Tags: xml操作类

分享到: