WEB开发网
开发学院WEB开发PHP php生成xml和转换[源码] 阅读

php生成xml和转换[源码]

 2010-10-16 08:04:46 来源:WEB开发网   
核心提示:php生成xml就像树一样,逐个添加节点,php生成xml和转换[源码],可以在一个父节点下添加多个子节点:php;">function madexml(){ //获取模板信息 $strTempInfo = $this->modelCmsObj->getTemplate('2007

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

php;">
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文档  
   
  
Forty What?  
Joe  
Jane  
  
  I know that's the answer -- but what's the question?  
  
  
XML;  

$xml = simplexml_load_string($string);  
var_dump($xml); 

以上代码将输出:

php;">
SimpleXMLElement Object  
(  
  [title] => Forty What?  
  [from] => Joe  
  [to] => Jane  
  [body] =>  
   I know that's the answer -- but what's the question?  
)  

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

php;">
/**  
 * 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;  
} 

Tags:php 生成 xml

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接