当前位置导航:炫浪网>>网络学院>>网页制作>>PHP教程

php生成xml和转换[源码]

  php生成xml就像树一样,逐个添加节点,可以在一个父节点下添加多个子节点, function madexml()

  1. {  
  2.     //获取模板信息  
  3.     $strTempInfo = $this->modelCmsObj->getTemplate('2007');  
  4.     $arrTemp = explode("#",$strTempInfo);  
  5.     array_shift($arrTemp);  
  6.     $arrContents = array();  
  7.     foreach($arrTemp as $k=>$v)  
  8.     {  
  9.         $arrContents[$k]=explode(",",$v);  
  10.     }  
  11.     //解析为xml文件  
  12.     $objDom = new DOMDocument("1.0");  
  13.     header("Content-Type: text/plain");   
  14.     //添加元素和文本节点  
  15.     $root = $objDom->createElement("recommend");  
  16.     $objDom->appendChild($root);  
  17.     foreach($arrContents as $k=>$v)  
  18.     {  
  19.     $item = $objDom->createElement("entry");  
  20.     $root->appendChild($item);  
  21.     $nextitem1 = $objDom->createElement("simgurl");  
  22.     $nextitem2 = $objDom->createElement("imgurl");  
  23.     $nextitem3 = $objDom->createElement("fileurl");  
  24.     $item->appendChild($nextitem1);  
  25.     $item->appendChild($nextitem2);  
  26.     $item->appendChild($nextitem3);  
  27.     $text1 = $objDom->createTextNode($v[0]);  
  28.     $text = $objDom->createTextNode($v[1]);  
  29.     $text2 = $objDom->createTextNode($v[2]);  
  30.     $nextitem2->appendChild($text1);  
  31.     $nextitem3->appendChild($text2);  
  32.     $nextitem1->appendChild($text);  
  33.     }  
  34.  
  35.     echo $objDom->saveXML();  

simplexml_load_string把xml串转化为字符串

  1. <?php  
  2. $string = <<<XML//声明xml文档  
  3. <?xml version='1.0'?>   
  4. <document>  
  5. <title>Forty What?</title>  
  6. <from>Joe</from>  
  7. <to>Jane</to>  
  8. <body>  
  9.   I know that's the answer -- but what's the question?  
  10. </body>  
  11. </document>  
  12. XML;  
  13.  
  14. $xml = simplexml_load_string($string);  
  15.  
  16. var_dump($xml);  
  17. ?>   
  18.  
  19.  
  20. This script will display:   
  21.  
  22. SimpleXMLElement Object  
  23. (  
  24.   [title] => Forty What?  
  25.   [from] => Joe  
  26.   [to] => Jane  
  27.   [body] =>  
  28.    I know that's the answer -- but what's the question?  
  29. )  
  30.   

 如果想把xml转换为数组,先转换为字符串含有键值的字符串,然后再进行循环就可以成为数组了,

  1. /**  
  2.  * xml转换为数组  
  3.  * @param unknown_type $xml  
  4.  */ 
  5. private function xml_to_array($xml)  
  6. {  
  7.           $array = (array)(simplexml_load_string($xml,'SimpleXMLElement', LIBXML_NOCDATA));  
  8.           foreach ($array as $key=>$item){  
  9.             $array[$key]  = $this->struct_to_array((array)$item);  
  10.           }  
  11.           return $array;  
  12. }  
  13.  
  14. private function struct_to_array($item) {  
  15.           if(!is_string($item)) {  
  16.             $item = (array)$item;  
  17.             foreach ($item as $key=>$val){  
  18.               $item[$key]  =  self::struct_to_array($val);  
  19.             }  
  20.           }  
  21.           return $item;  
相关内容
赞助商链接