时间:2021-07-01 10:21:17 帮助过:18人阅读
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 = simplexml_load_string($string); var_dump($xml); Forty What? Joe Jane I know that's the answer -- but what's the question?
以上代码将输出:
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;
}