php实现的xml操作类


Posted in PHP onJanuary 15, 2016

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

<?php
/*
使用方法:
$test=new xml();
$test->new_xml('test.xml');
$test->root('document');
$test->append_root_node('book');
$test->append_child_node('author','linage');
$test->append_child_node('page',100);
$test->append_child_node('money','35 RMB');
$test->append_root_node_end();
$test->append_root_node('book','name','The"Web"Servers');
$test->append_child_node('a u t ho"r','li n a g e');
$test->append_child_node('page',100);
$test->append_child_node('money','35 RMB');
$test->append_root_node_end();
$test->display();
$test->save();
生成的xml结果:
<?xml version="1.0" encoding="utf-8"?>
<document>
<book>
<author>linage</author>
<page>100</page>
<money>35 RMB</money>
</book>
<book name="TheWebServers">
<author>li n a g e</author>
<page>100</page>
<money>35 RMB</money>
</book>
</document>
*/
class xml{
var $version;
var $encoding;
var $start;
var $end;
var $filename;
var $xml_document;
var $root_start;
var $root_end;
var $rss_start;
var $rss_end;
function xml($ver='1.0',$encoding='GB2312'){
 $this->version="<?xml version=/"{$ver}/" encoding=/"{$encoding}/" standalone=/"yes/" ?>";
 $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]/">";
 $this->rss_end="</rss>";
}
function new_xml($filename){
 $this->filename=$filename;
 return true;
}
function root($element){
 $element=$this->filter($element);
 if(isset($this->start) and isset($this->end)){
 exit("error:Only one top level element is allowed in an XML document./r/n");
 }else{
 $this->start="<$element>";
 $this->end="</$element>";
 $this->xml_document=$this->version."/n".$this->rss_start."/n".$this->start."/n";
 return true;
 }
}
function append_root_node($title,$property=null,$pro_val=null){
 $title=$this->filter($title);
 $property=$this->filter($property);
 $pro_val=$this->filter($pro_val);
 $property!=null?$pro_str=" $property=/"$pro_val/"":$property=null;
 $contents="<{$title}{$pro_str}>/n";
 $this->xml_document.=$contents;
 $this->root_end="</$title>";
 return true;
}
function append_root_node_end(){
 $this->xml_document.=$this->root_end."/n";
 return true;
}
function append_child_node($title='undefined',$contents='undefined',$property=null,$pro_val=null,$cddate=false){
 isset($property)?$pro_str=" $property=/"$pro_val/"":$property=null;
 $title=$this->filter($title);
 $contents=$this->filter($contents,false);
 $property=$this->filter($property);
 $pro_val=$this->filter($pro_val);
 $cddate===false?$cddate=false:$cddate=true;
 if($cddate){
 $contents="<{$title}{$pro_str}><!--[CDATA['/n$contents/n']]--></$title>/n";
 }else{
 $contents="<{$title}{$pro_str}>$contents</$title>";
 }
 $this->xml_document.=$contents."/n";
 return true;
}
function display(){
 header("Content-type: text/xml");
 $xml=$this->xml_document.$this->end."/n".$this->rss_end;
 echo $xml;
 //return true;
}
function filter($sring,$replace_null=true){
 $filter[]='"';
 $filter[]="//";
 $filter[]="/n";
 $filter[]="/r";
 $filter[]="/t";
 $replace_null===true?$filter[]=" ":$replace_null=false;
 foreach ($filter as $val){
 $sring=str_replace($val,'',$sring);
 }
 return $sring;
}
function encode(){
 //you can add the convert encode function here or add other class to do that
}
function save(){
 $this->xml_document=$this->xml_document.$this->end."/n".$this->rss_end;
 $handle=fopen($this->filename,'wb+');
 $result=fwrite($handle,$this->xml_document);
 fclose($handle);
 if($result){
 return true;
 }else{
 echo "error:can't write to files,maybe the access denied.try to chmod 777 the directory?";
 return false;
 }
}
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 的几个配置文件函数
Dec 21 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
PHP获取类私有属性的3种方法
Sep 10 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 #PHP
Linux安装配置php环境的方法
Jan 14 #PHP
PHP实现QQ登录实例代码
Jan 14 #PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 #PHP
详解HTTP Cookie状态管理机制
Jan 14 #PHP
在php中设置session用memcache来存储的方法总结
Jan 14 #PHP
thinkphp实现图片上传功能
Jan 13 #PHP
You might like
PHP中if和or运行效率对比
2014/12/12 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
python3.3实现乘法表示例
2014/02/07 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
浅析python中的del用法
2020/09/02 Python
心得体会范文
2014/01/04 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
高校教师个人总结
2015/02/10 职场文书
毕业生个人总结
2015/02/28 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang