介绍
怎么在PHP中利用数组生成一个XML格式的数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
类库代码:MakeXML。php:
& lt; php ?/* *,从数组生成XML文件 */class Fwcms_MakeXML { private 才能;static $实例; private 才能;function  __construct () {} ,/* * ,,*,单件模式调用本类 ,,* ,,*,@return 单件模式 ,,*/public 才能static function  getInstance (), { ,,,if (!收取(self::实例),{ ,,,,,自我:instance =, new Fwcms_MakeXML (); ,,,} ,,,return 自我:实例; ,,} ,/* * ,,*,获取XML字串 ,,*,@param array 美元;用于生成XML的数组,数组可以是二维或多维的,其中的第一个元素作为XML元素名 ,,*,@param xslName 美元;XSL文件名(如:“http://www.xxx.com/templates/normal/xslname.xsl") ,,*,@return XMLString 美元;输出XML字符串 ,,*/public 才能;function  getXML(数组,xslName美元=啊?{ ,,,XMLString 美元;=,& # 39;& lt; ? xml version=?.0“,编码=皍tf-8" ?祝辞& # 39;; ,,,如果($ xslName !=啊? ,,,,,XMLString美元。=& # 39;& lt; ? xml-stylesheet 类型=拔谋?xsl", href=https://www.yisu.com/zixun/皒slName美元。”?> '; XMLString美元。=$ this ->(数组); 返回XMLString美元; }/* *递归生成XML字串 */私有函数使美元(数组) { $ XMLString=? 美元haveRightBracket=FALSE; 如果收取($阵列[' elementName '])) { 数组$ elementName=array_shift($);//数组的第一个元素为XML元素名 其他}{ 美元elementName=钅俊?//如果没有指定则元素名为项目 } XMLString=' <'。elementName美元。' '; 如果(is_array(数组)美元){ foreach(数组paramKey美元=> nodeParam美元){ 如果(! is_array (nodeParam美元)){//如果不是一个下级元素,那就是元素的参数 XMLString美元。=$ paramKey nodeParam美元“=薄薄!啊薄? 其他}{ 如果(! $ haveRightBracket) { XMLString美元。='> '; 美元haveRightBracket=TRUE; }//如果是下级元素,则追加元素 XMLString美元。=$ this -> (nodeParam美元); } } } 如果(! $ haveRightBracket) { XMLString美元。='> '; 美元haveRightBracket=TRUE; } XMLString美元。=' 癳lementName美元。”>“;//该元素处理结束 返回XMLString美元; }/* * *将字串保存到文件 * @param $ fileName文件名 * @param XMLString美元已经生成的XML字串 */公共函数saveToFile(文件名,XMLString美元) { 如果(! $处理=fopen ($ fileName ' w ')) { 返回错误; } 如果(!写入文件(手柄,XMLString美元)) { 返回错误; } 返回TRUE; }/* * *直接通过数组生成XML文件 */公共函数编写(文件名,数组,美元xslName美元="){ $ XMLString=$ this -> getXML(数组,xslName美元); $=$ this ->结果saveToFile(文件名,XMLString美元); 返回结果美元; } }
测试代码testXML。php:
& lt; php ? require_once & # 39; MakeXML.php& # 39;; $ xml=Fwcms_MakeXML: getInstance ();//$ xml=new Fwcms_MakeXML (); $数组=阵列( ,,,& # 39;elementname # 39;=祝辞& # 39;数据# 39;//XML节点名,如不定义则默认为项目 ,,,& # 39;test1 # 39;=祝辞阵列( ,,,,,//不定义本节点名 ,,,,,//& # 39;elementname # 39;=祝辞& # 39;item1& # 39; ,,,,,& # 39;id # 39;=祝辞;1, ,,,,,& # 39;标题# 39;=祝辞& # 39;try1& # 39; ,,,), ,,,& # 39;test2 # 39;=祝辞阵列( ,,,,,& # 39;elementname # 39;=祝辞& # 39;第二条# 39; ,,,,,& # 39;id # 39;=祝辞;2,//参数 ,,,,,& # 39;标题# 39;=祝辞& # 39;try2& # 39;//参数 ,,,,,& # 39;test2.2& # 39;=祝辞阵列( ,,,,,,,//XML子节点,必须放在所有参数之后,后面不可以再跟参数 ,,,,,,,& # 39;elementname # 39;=祝辞& # 39;item2.2& # 39; ,,,,,,,& # 39;id # 39;=在2.2, ,,,,,,,& # 39;标题# 39;=祝辞& # 39;try2.2& # 39; ,,,,,) ,,,), ,,,& # 39;test3 # 39;=祝辞阵列( ,,,,,& # 39;elementname # 39;=祝辞& # 39;item3& # 39; ,,,,,& # 39;id # 39;=祝辞;3, ,,,,,& # 39;标题# 39;=祝辞& # 39;try3& # 39; ,,,), ,,,& # 39;test4 # 39;=祝辞阵列( ,,,,,& # 39;elementname # 39;=祝辞& # 39;item4& # 39; ,,,,,& # 39;id # 39;=祝辞;4, ,,,,,& # 39;标题# 39;=祝辞& # 39;try4& # 39; ,,,), ,,,& # 39;test5& # 39;=祝辞阵列( ,,,,,//不定义本节点名 ,,,,,//& # 39;elementname # 39;=祝辞& # 39;item5& # 39; ,,,,,& # 39;id # 39;=祝辞;5, ,,,,,& # 39;标题# 39;=祝辞& # 39;try5& # 39; ,,,) ,,); $=$ xml字符串→getXML(数组)美元;//由数组生成xml字串 $ xml→saveToFile (& # 39; test.xml& # 39;,美元字符串);//把生成的xml字串写入到文件 $ xml→写(& # 39;test2 . xml # 39;,数组,美元& # 39;test2.xsl& # 39;);//直接从数组中获取字串生成文件 null null null怎么在PHP中利用数组生成一个XML格式的数据