Heim > Artikel > Backend-Entwicklung > 讲解PHP生成xml源代码_PHP教程
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 =
I know thats the answer -- but whats the question?
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 thats the answer -- but whats 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;
}