说到XML很多人对这个语言还是不熟悉的,它表示一种标记语言。在XML语法上,它与HTML类似,但是HTML中的元素是固定的,并且用户可以定制XML标签。对于数组的学习也有一定的积累,那么我们可以把数组转换为XML的形式,在正式开始数组的转换前,可以先对XML进行一些了解。
1、说明
XML 是可扩展标记语言(EXtensible Markup Language)。
XML 是一种很像HTML的标记语言。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
2、转换实例
<?php namespaceLibrary; /** *最外层的当个元素可以自定义标签,内层单个元素统一标签为$defaultSingleOuter */ classXML { privatestatic$version="1.0"; privatestatic$encoding='utf-8'; //最外层 privatestatic$outer=''; //最外层属性 privatestatic$outerAttribut=[]; //单个元素的外层 privatestatic$singleOuter=''; //单个元素外层的属性 privatestatic$singleOuterAttribut=[]; privatestatic$defaultSingleOuter='item'; publicfunctionA2XML(array$data) { $xml=new\XMLWriter(); $this->begin($xml); //写数据 if(is_numeric(current(array_keys($data)))){ foreach($dataas$key=>$val){ $this->singleBegin($xml,true); $this->writeElement($xml,$val); $this->singleEnd($xml); } }else{ $this->writeElement($xml,$data); } return$this->end($xml); } /** *写数据 * *@param\XMLWriter$xml *@param$data */ privatefunctionwriteElement(\XMLWriter&$xml,$data) { if(!is_array($data)){ $xml->writeElement(self::$defaultSingleOuter,$data); return; } foreach($dataas$key=>$val){ if(is_numeric($key)){ is_array($val)&&$this->singleBegin($xml); $this->writeElement($xml,$val); is_array($val)&&$this->singleEnd($xml); continue; } if(is_array($val)){ $xml->startElement($key); $this->writeElement($xml,$val); $xml->endElement(); continue; } $xml->writeElement($key,$val); } } /** *开始 * *@param\XMLWriter$xml */ privatefunctionbegin(\XMLWriter&$xml) { $xml->openMemory(); $xml->startDocument(self::$version,self::$encoding); if(self::$outer){ $xml->startElement(self::$outer); } if(self::$outerAttribut){ foreach(self::$outerAttributas$key=>$val){ $xml->writeAttribute($key,$val); } } } /** *结束 * *@param\XMLWriter$xml *@returnstring */ privatefunctionend(\XMLWriter$xml) { if(self::$outer){ $xml->endElement(); } $xml->endDocument(); header("Content-type:text/xml"); //取得缓冲区里的xml字符串 return$xml->outputMemory(true); } /** *单个元素的开始 * *@param\XMLWriter$xml *@parambool$first */ privatefunctionsingleBegin(\XMLWriter$xml,$first=false) { if($first){ $xml->startElement(self::$singleOuter?:self::$defaultSingleOuter); if(self::$singleOuterAttribut){ foreach(self::$singleOuterAttributas$key=>$val){ $xml->writeAttribute($key,$val); } } }else{ $xml->startElement(self::$defaultSingleOuter); } } /** *单个元素的结束 * *@param\XMLWriter$xml */ privatefunctionsingleEnd(\XMLWriter$xml) { $xml->endElement(); } publicfunctionsetVersion($version=1.0) { self::$version=$version; return$this; } publicfunctionsetEncoding($encoding='utf-8') { self::$version=$encoding; return$this; } publicfunctionsetOuter($outer='') { self::$outer=$outer; return$this; } publicfunctionsetOuterAttribut(array$outerAttribut=[]) { self::$outerAttribut=$outerAttribut; return$this; } publicfunctionsetSingleOuter($singleOuter) { self::$singleOuter=$singleOuter; return$this; } publicfunctionsetSingleOuterAttribut(array$singleOuterAttribut=[]) { self::$singleOuterAttribut=$singleOuterAttribut; return$this; } publicfunctionsetDefaultSingleOuter($defaultSingleOuter) { self::$defaultSingleOuter=$defaultSingleOuter; return$this; } }原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容