数组转为XML

<?php define("XML_FLAG_ATTR", "attr_"); define("XML_FLAG_CDATA_VAL", "cdata_val"); define("XML_FLAG_NORM_VAL", "norm_val"); define("XML_FLAG_CONTENT", "sub_cont"); final class toxml { function array2Xml($p_arrData, $p_strRootNodeName = "realbus", $p_pXml = NUll, $p_pRoot = NULL) { if (NUll === $p_pXml) { $p_pXml = new DOMDocument("1.0", 'utf-8'); $p_pRoot = $p_pXml->appendChild($p_pXml->createElement($p_strRootNodeName)); } foreach ($p_arrData as $mxKey => $mxValue) { if (is_numeric($mxKey) && is_array($mxValue)) { foreach ($mxValue as $mxSubKey => $mxSubValue) { if (is_array($mxSubValue)) { $pListNode = $p_pRoot->appendChild($p_pXml->createElement($mxSubKey)); foreach ($mxSubValue as $mxThKey => $mxThValie) { if (is_string($mxThKey)) { if (XML_FLAG_CDATA_VAL === $mxThKey) { $pListNode->appendChild($p_pXml->createCDATASection($mxThValie)); } elseif (XML_FLAG_NORM_VAL === $mxThKey) { $pListNode->appendChild($p_pXml->createTextNode($mxThValie)); } elseif (strpos($mxThKey, XML_FLAG_ATTR) >-1) { $pListNode->appendChild($p_pXml->createAttribute(substr($mxThKey, strlen(XML_FLAG_ATTR))))->appendChild($p_pXml->createTextNode($mxThValie)); } elseif (XML_FLAG_CONTENT === $mxThKey) { if (is_array($mxThValie)) { $this->array2Xml($mxThValie, $p_strRootNodeName, $p_pXml, $pListNode); } } else { $pNode = $pListNode->appendChild($p_pXml->createElement($mxThKey)); $this->array2Xml($mxThValie, $p_strRootNodeName, $p_pXml, $pNode); } } } } } } else { $mxKey = preg_replace('/[^a-z0-9_]/i', '', $mxKey); if (XML_FLAG_CDATA_VAL === $mxKey) { $p_pRoot->appendChild($p_pXml->createCDATASection($mxValue)); } elseif (XML_FLAG_NORM_VAL === $mxKey) { $p_pRoot->appendChild($p_pXml->createTextNode($mxValue)); } elseif (strpos($mxKey, XML_FLAG_ATTR) > -1) { $p_pRoot->appendChild($p_pXml->createAttribute(substr($mxKey, strlen(XML_FLAG_ATTR))))->appendChild($p_pXml->createTextNode($mxValue)); } elseif (XML_FLAG_CONTENT === $mxKey) { if (is_array($mxValue)) { $this->array2Xml($mxValue, $p_strRootNodeName, $p_pXml, $p_pRoot); } } else { if (is_array($mxValue)) { $pNode = $p_pRoot->appendChild($p_pXml->createElement($mxKey)); $this->array2Xml($mxValue, $p_strRootNodeName, $p_pXml, $pNode); } else { $p_pRoot->appendChild($p_pXml->createElement($mxKey, htmlentities(trim($mxValue)))); } } } } $strXml = $p_pXml->saveXML(); return $strXml; } } /* $arr=array( 't1'=>array('uid'=>'1001', 'name'=>'jack', 'tel'=>array('uid'=>'1001','name'=>'jack')), 't2'=>array('uid'=>'1002', 'name'=>'mark', 'tel'=>'1233423'), 't3'=>array('uid'=>'1003', 'name'=>'annn', 'tel'=>'1233423'), 't4'=>array('uid'=>'1004', 'name'=>'cccc', 'tel'=>'1232233'), //'attr_id'=>'1001', //'attr_name'=>'mark' ); */ // header('Content-type:text/xml;charset="utf-8"'); // $pXml=new toxml(); // echo $pXml->array2Xml($arr); ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值