Home >Backend Development >PHP Tutorial >php生成xml和转换[源码]

php生成xml和转换[源码]

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 14:24:261186browse

 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串转化为字符串

$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); 

以上代码将输出:

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;  
} 
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn