php实现的xml操作类

5年以前  |  阅读数:229 次  |  编程语言:PHP 

本文实例讲述了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操作xml相关内容感兴趣的读者可查看本站专题:《PHP针对XML文件操作技巧总结

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

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例