php生成xml和转换[源码]
程序员文章站
2022-04-21 16:59:10
...
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; }