|
php生成xml就像树一样,逐个添加节点,可以在一个父节点下添加多个子节点, function madexml()- { //获取模板信息 $strTempInfo = $this->modelCmsObj->getTemplate('2007'); $arrTemp = explode('#',$strTempInfo); array_shift($arrTemp); $arrContents = array(); foreach($arrTemp as $k=>$v) { $arrContents[$k]=explode(',',$v); } //解析为xml文件 $objDom = new DOMDocument('1.0'); header('Content-Type: text/plain'); //添加元素和文本节点 $root = $objDom->createElement('recommend'); $objDom->appendChild($root); foreach($arrContents as $k=>$v) { $item = $objDom->createElement('entry'); $root->appendChild($item); $nextitem1 = $objDom->createElement('simgurl'); $nextitem2 = $objDom->createElement('imgurl'); $nextitem3 = $objDom->createElement('fileurl'); $item->appendChild($nextitem1); $item->appendChild($nextitem2); $item->appendChild($nextitem3); $text1 = $objDom->createTextNode($v[0]); $text = $objDom->createTextNode($v[1]); $text2 = $objDom->createTextNode($v[2]); $nextitem2->appendChild($text1); $nextitem3->appendChild($text2); $nextitem1->appendChild($text); } echo $objDom->saveXML(); }
复制代码 simplexml_load_string把xml串转化为字符串- <?php $string = <<<XML//声明xml文档 <?xml version='1.0'?> <document> <title>Forty What?</title> <from>Joe</from> <to>Jane</to> <body> I know that's the answer -- but what's the question? </body> </document> XML; $xml = simplexml_load_string($string); var_dump($xml); ?> This script will display: SimpleXMLElement Object ( [title] => Forty What? [from] => Joe [to] => Jane [body] => I know that's the answer -- but what's the question? )
复制代码 如果想把xml转换为数组,先转换为字符串含有键值的字符串,然后再进行循环就可以成为数组了- /** * xml转换为数组 * @param unknown_type $xml */ private function xml_to_array($xml) { $array = (array)(simplexml_load_string($xml,'SimpleXMLElement', LIBXML_NOCDATA)); foreach ($array as $key=>$item){ $array[$key] = $this->struct_to_array((array)$item); } return $array; } private function struct_to_array($item) { if(!is_string($item)) { $item = (array)$item; foreach ($item as $key=>$val){ $item[$key] = self::struct_to_array($val); } } return $item; }
复制代码 |
评分
-
查看全部评分
|