国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP數(shù)組生成XML格式數(shù)據(jù)的封裝類實(shí)例

2024-05-04 23:52:06
字體:
供稿:網(wǎng)友

本文實(shí)例講述了PHP數(shù)組生成XML格式數(shù)據(jù)的封裝類。分享給大家供大家參考,具體如下:

類庫代碼:MakeXML.php:

<?php/*** MakeXML** @author Lin Jiong(slime09@gmail.com)* @version v1.0* @license Copyright (c) 2009 Lin Jiong (www.cn09.com)* The LGPL (http://www.gnu.org/licenses/lgpl.html) licenses.*//** 從數(shù)組生成XML文件*/class Fwcms_MakeXML{  private static $instance;  private function __construct(){}  /**   * 單件模式調(diào)用本類   *   * @return 單件模式   */  public static function getInstance() {    if (!isset(self::instance)) {      self::instance = new Fwcms_MakeXML();    }    return self::instance;  }  /**   * 獲取XML字串   * @param $array 用于生成XML的數(shù)組,數(shù)組可以是二維或多維的,其中的第一個(gè)元素作為XML元素名   * @param $xslName XSL文件名(如:"http://www.xxx.com/templates/normal/xslname.xsl")   * @return $XMLString 輸出XML字符串   */  public function getXML($array,$xslName=""){    $XMLString = '<?xml version="1.0" encoding="utf-8"?>';    if($xslName!="")      $XMLString.='<?xml-stylesheet type="text/xsl" href="'.$xslName.'"?>';    $XMLString.=$this->make($array);    return $XMLString;  }  /*   * 遞歸生成XML字串   */  private function make($array)  {    $XMLString='';    $haveRightBracket=FALSE;    if(isset($array['elementName'])){      $elementName=array_shift($array);//數(shù)組的第一個(gè)元素為XML元素名    }else{      $elementName='item';//如果沒有指定則元素名為item    }    $XMLString.='<'.$elementName.' ';    if(is_array($array)){    foreach($array as $paramKey=>$nodeParam){        if(!is_array($nodeParam)){          //如果不是一個(gè)下級(jí)元素,那就是元素的參數(shù)          $XMLString.=$paramKey.'="'.$nodeParam.'" ';        }else{          if(!$haveRightBracket){            $XMLString.='>';            $haveRightBracket=TRUE;          }          //如果是下級(jí)元素,則追加元素          $XMLString.=$this->make($nodeParam);        }      }    }    if(!$haveRightBracket){      $XMLString.='>';      $haveRightBracket=TRUE;    }    $XMLString.='</'.$elementName.'>';//該元素處理結(jié)束    return $XMLString;  }  /**   * 將字串保存到文件   * @param $fileName 文件名   * @param $XMLString 已經(jīng)生成的XML字串   */  public function saveToFile($fileName,$XMLString)  {    if(!$handle=fopen($fileName,'w'))    {      return FALSE;    }    if(!fwrite($handle,$XMLString))    {      return FALSE;    }    return TRUE;  }  /**   * 直接通過數(shù)組生成XML文件   */  public function write($fileName,$array,$xslName=''){    $XMLString=$this->getXML($array,$xslName);    $result=$this->saveToFile($fileName,$XMLString);    return $result;  }}

測試代碼testXML.php:

<?phprequire_once 'MakeXML.php';$xml=Fwcms_MakeXML::getInstance();//$xml=new Fwcms_MakeXML();$array=array(    'elementName'=>'data',//XML節(jié)點(diǎn)名,如不定義則默認(rèn)為ITEM    'test1'=>array(      //不定義本節(jié)點(diǎn)名      //'elementName'=>'item1',      'id'=>1,      'title'=>'try1'    ),    'test2'=>array(      'elementName'=>'item2',      'id'=>2,//參數(shù)      'title'=>'try2',//參數(shù)      'test2.2'=>array(        //XML子節(jié)點(diǎn),必須放在所有參數(shù)之后,后面不可以再跟參數(shù)        'elementName'=>'item2.2',        'id'=>2.2,        'title'=>'try2.2'      )    ),    'test3'=>array(      'elementName'=>'item3',      'id'=>3,      'title'=>'try3'    ),    'test4'=>array(      'elementName'=>'item4',      'id'=>4,      'title'=>'try4'    ),    'test5'=>array(      //不定義本節(jié)點(diǎn)名      //'elementName'=>'item5',      'id'=>5,      'title'=>'try5'    )  );$string=$xml->getXML($array);//由數(shù)組生成XML字串$xml->saveToFile('test.xml',$string);//把生成的XML字串寫入到文件$xml->write('test2.xml',$array,'test2.xsl');//直接從數(shù)組中獲取字串生成文件header ("content-type: text/xml");echo $string;?>

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 兴安县| 岢岚县| 高陵县| 方山县| 都匀市| 梁山县| 北辰区| 施甸县| 兴仁县| 庄河市| 青冈县| 当雄县| 陆川县| 彭阳县| 昌图县| 营口市| 本溪| 会昌县| 北流市| 汉阴县| 泗水县| 常山县| 吉水县| 习水县| 莆田市| 东港市| 高唐县| 自治县| 荣成市| 洛宁县| 兴业县| 久治县| 平罗县| 江北区| 芦溪县| 黄山市| 中阳县| 安福县| 桐梓县| 荃湾区| 莲花县|