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

php生成xml和转换[源码]

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-01 14:24:26
Original
1185 people have browsed it

 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();  
}
Copy after login

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); 
Copy after login

以上代码将输出:

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

如果想把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;  
} 
Copy after login
Related labels:
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template