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();
- }
- <?php
- $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);
- ?>
- This script will display:
- 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;
- }