• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    輕量級的xml文檔生成類

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網


    PHP代碼:--------------------------------------------------------------------------------
    <?
    /**
    * 輕量級XML文檔生成類(非dom)
    * author: q3boy <q3boy@sina.com>
    * version: v0.1 aplha
    * update: 2003/9/8
    * 支持Element/CDATA/Declare/attribute/Comment,可選擇是否包含換行和縮進
    */
    class xml {

    /** 元素名 */
    var $name;
    /** 元素值 */
    var $value;
    /** 元素類型 */
    var $type;
    /** 元素屬性 */
    var $attrib;
    /** XML聲明 */
    var $declare;
    /** 是否縮進換行 */
    var $space;

    /** 構造函數 */
    function xml($name='',$value='') {
    $this->name = $name;
    $this->value = $value;
    $this->declare = array();
    $this->setTypes('Element');
    $this->setAttrib(array());
    $this->setSpace(false);
    }

    /** 設置元素類型 */
    function setTypes($type) {
    $this->type = $type;
    }

    /** 設置是否縮進換行 */
    function setSpace($space) {
    $this->space = $space;
    }

    /** 設置元素屬性 */
    function setAttrib($name,$value='') {
    if(is_array($name)) {
    $this->attrib = array_merge($this->attrib,$name);
    }else {
    $this->attrib[$name] = $value;
    }
    }

    /** 添加子元素 */
    function &addElement($name='',$value='') {
    if(!is_array($this->value)) {
    $this->value = array();
    }
    $xml = new xml($name,$value);
    $xml->setSpace($this->space);
    $this->value[] = &$xml;
    return $this->value[sizeof($this->value)-1];
    }

    /** 添加CDATA數據 */
    function &addCDATA($name='',$value='') {
    if(!is_array($this->value)) {
    $this->value = array();
    }
    $xml = new xml($name,$value);
    $xml->setSpace($this->space);
    $xml->setTypes('CDATA');
    $this->value[] = &$xml;
    return $this->value[sizeof($this->value)-1];
    }

    /** 添加XML聲明 */
    function &addDeclare($name='',$value='') {
    if(!is_array($this->declare)) {
    $this->value = array();
    }
    $xml = new xml($name,$value);
    $xml->setSpace($this->space);
    $xml->setTypes('Declare');
    $this->declare[] = &$xml;
    return $this->declare[sizeof($this->value)-1];
    }

    /** 添加注釋文本 */
    function &addComment($content='') {
    if(!is_array($this->value)) {
    $this->value = array();
    }
    $xml = new xml($content);
    $xml->setSpace($this->space);
    $xml->setTypes('Comment');
    $this->value[] = &$xml;
    return $this->value[sizeof($this->value)-1];
    }

    /** 返回xml文本流 */
    function toString($itm='',$layer=0) {
    if(!is_object($itm))$itm = &$this;
    /* 換行/縮進 */
    if($this->space) {
    $tab = str_repeat(" ",$layer);
    $tab1 = str_repeat(" ",$layer+1);
    $br = "\n";
    }
    /* XML聲明 */
    for($i=0; $i<sizeof($itm->declare); $i++) {
    $out = "<?".$itm->declare[$i]->name;
    foreach($itm->declare[$i]->attrib as $key=>$val) {
    $out .=" $key=\"".$this->encode($val)."\"";
    }
    $out.="?>$br";
    }
    /* 文檔樹 */
    switch($itm->type) {
    case 'CDATA':
    case 'Element':
    $out .= $tab.'<'.$itm->name;
    foreach($itm->attrib as $key=>$val) {
    $out .=" $key=\"".$this->encode($val)."\"";
    }
    if(is_array($itm->value)) {
    $out .='>'.$br;
    for($i=0; $i<sizeof($itm->value); $i++) {
    $out .=$this->toString(&$itm->value[$i],$layer+1);
    }
    $out .= $tab.'</'.$itm->name.'>'.$br;

    }elseif($itm->value!='') {
    $out .='>'.$br.$this->encode($itm->value,$itm->type,$tab1,$br).$br.$tab.'</'.$itm->name.'>'.$br;
    }else {
    $out .=' />'.$br;
    }
    break;
    case 'Comment':
    $out .= '<!--'.$br.$itm->name.$br.'-->'.$br;
    break;
    }
    return $out;
    }

    /** 生成xml文件 */
    function toFile($file) {
    $fp = fopen($file,'w');
    fwrite($fp,trim($this->toString()));
    fclose($fp);
    }

    /** 實體引用轉換 */
    function encode($content,$type='Element',$tab1='',$br='') {
    if($type=='Element') {
    return $tab1.strtr($content,array('>'=>'&lt;','<'=>'&gt;','&'=>'&amp;','"'=>'&quot;',"'"=>'&apos;'));
    }elseif($type=='CDATA') {
    return '<![CDATA['.$br.str_replace(']]>',']] >',$content).$br.']]>';
    }
    }
    }

    /* example */

    /* 對象初始化 */
    $xml = new xml('test');

    /* 允許輸出換行/縮進 */
    $xml->setSpace(true);

    /* 設置xml聲明 */
    $d = &$xml->addDeclare('xml');
    $d->setAttrib("version","1.0");

    /* 設置xml文檔樹 */
    $xml1 = &$xml->addElement('test1','test1-1');
    $xml1->addElement('test2','test2-1');
    $x2 = &$xml1->addElement('test3','test2-2');
    $x2->setAttrib("asd","1&23<>4'\"23");

    $xml1->addElement('test4','test2-3');
    $xml->addElement('test455','taadsfa<><>fdsadest2-3');
    $xml->addComment('adsfadsf');//注釋
    /* CDATA數據 */
    $xml->addCDATA('cdname','dflkgmsglsd
    f]gl
    sdgl
    asgl
    sf"&ldgsldkfg]]>
    sldf
    gsdfgsD?FG>S<DG>S?D<Fgsd]fglsg>>');
    $x1 = &$xml->addElement('test455');
    $x1->setAttrib("asd",123423);
    $xml->setAttrib(array("asd"=>123,'sdfgdfg'=>2341));
    $xml->setAttrib("asd",123423);
    /* 輸出文件 */
    $xml->tofile('aaa.xml');
    ?>

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>