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生成静态页的实现方法
May 10 PHP
PHP图片上传代码
Nov 04 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
php使用curl获取https请求的方法
Feb 11 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
php字符串函数学习之strstr()
Mar 27 PHP
php多重接口的实现方法
Jun 20 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 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 操作文件的一些FAQ总结
2009/02/12 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
js实现扫雷源代码
2020/11/27 Javascript
wxPython 入门教程
2008/10/07 Python
python中反射用法实例
2015/03/27 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python的turtle库使用详解
2019/05/10 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
C#中的验证控件有几种
2014/03/08 面试题
客服专员岗位职责范本
2013/11/29 职场文书
给医务人员表扬信
2014/01/12 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
运动会解说词200字
2014/02/06 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
企业党员一句话承诺
2014/05/30 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
2014年话务员工作总结
2014/11/19 职场文书
大学生毕业个人总结
2015/02/15 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android