php 怎么将数组转xml的函数?

php 怎么将数组转xml的函数


眼眸繁星
浏览 1204回答 4
4回答

MYYA

没有现成函数,只能自己写;我有一个别人写的函数:<?phpclass A2Xml {private $version = '1.0';private $encoding = 'UTF-8';private $root = 'root';private $xml = null;function __construct() {$this->xml = new XmlWriter();}function toXml($data, $eIsArray=FALSE) {if(!$eIsArray) {$this->xml->openMemory();$this->xml->startDocument($this->version, $this->encoding);$this->xml->startElement($this->root);}foreach($data as $key => $value){if(is_array($value)){$this->xml->startElement($key);$this->toXml($value, TRUE);$this->xml->endElement();continue;}$this->xml->writeElement($key, $value);}if(!$eIsArray) {$this->xml->endElement();return $this->xml->outputMemory(true);}}}$res = array('hello' => '11212','world' => '232323','array' => array('test' => 'test','b' => array('c'=>'c', 'd'=>'d')),'a' => 'haha');$xml = new A2Xml();echo $xml->toXml($res);

弑天下

123456789101112131415161718192021222324252627282930313233343536373839404142<?phpclass&nbsp;A2Xml&nbsp;{&nbsp;&nbsp;private&nbsp;$version&nbsp;&nbsp;=&nbsp;'1.0';&nbsp;&nbsp;private&nbsp;$encoding&nbsp;&nbsp;=&nbsp;'UTF-8';&nbsp;&nbsp;private&nbsp;$root&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'root';&nbsp;&nbsp;private&nbsp;$xml&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;null;&nbsp;&nbsp;function&nbsp;__construct()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;$this->xml&nbsp;=&nbsp;new&nbsp;XmlWriter();&nbsp;&nbsp;}&nbsp;&nbsp;function&nbsp;toXml($data,&nbsp;$eIsArray=FALSE)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if(!$eIsArray)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->openMemory();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->startDocument($this->version,&nbsp;$this->encoding);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->startElement($this->root);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;foreach($data&nbsp;as&nbsp;$key&nbsp;=>&nbsp;$value){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(is_array($value)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->startElement($key);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->toXml($value,&nbsp;TRUE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->endElement();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->writeElement($key,&nbsp;$value);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;if(!$eIsArray)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->xml->endElement();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this->xml->outputMemory(true);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}}$res&nbsp;=&nbsp;array(&nbsp;&nbsp;'hello'&nbsp;=>&nbsp;'11212',&nbsp;&nbsp;'world'&nbsp;=>&nbsp;'232323',&nbsp;&nbsp;'array'&nbsp;=>&nbsp;array(&nbsp;&nbsp;&nbsp;&nbsp;'test'&nbsp;=>&nbsp;'test',&nbsp;&nbsp;&nbsp;&nbsp;'b'&nbsp;&nbsp;=>&nbsp;array('c'=>'c',&nbsp;'d'=>'d')&nbsp;&nbsp;),&nbsp;&nbsp;'a'&nbsp;=>&nbsp;'haha');$xml&nbsp;=&nbsp;new&nbsp;A2Xml();echo&nbsp;$xml->toXml($res);

白衣染霜花

xml转array方法没错,只是xml中有三个<list>,而数组中却不能出现三个$arr['list'],所以这个方法自动把三个<list>中的内容放进了一个二维数组中。可以尝试直接取$arr['list'],取出结果应该就是 Array ( [0] => 1 [1] => 2 [2] => 3 ) 了。

Helenr

public function arrayToXml($arr){$xml = "<xml>";foreach ($arr as $key=>$val){if(is_array($val)){$xml.="<".$key.">".arrayToXml($val)."</".$key.">";}else{if (is_numeric($val)){$xml.="<".$key.">".$val."</".$key.">";}else{$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";}}}$xml.="</xml>";return $xml;}
打开App,查看更多内容
随时随地看视频慕课网APP