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_x("recommend");  

    $objDom->appendChild($root);  

    foreach($arrContents as $k=>$v)  

    {  

    $item = $objDom->createElement_x("entry");  

    $root->appendChild($item);  

    $nextitem1 = $objDom->createElement_x("simgurl");  

    $nextitem2 = $objDom->createElement_x("imgurl");  

    $nextitem3 = $objDom->createElement_x("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转换为数组,先转换为字符串含有键值的字符串,然后再进行循环就可以成为数组了,

 

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;