作者:默默-的米线_601 | 来源:互联网 | 2018-04-21 03:05
php生成xml就像树一样,逐个添加节点,可以在一个父节点下添加多个子节点:functionmadexml(){获取模板信息$strTempInfo$this-modelCmsObj-getTemplate(2007);$arrTempexplode(#,$strTempI
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 = <<
Joe
Jane
I know that's the answer -- but what's the question?
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;
}