php数组转xml的递归实现

PHP中奖数组转为xml的需求是常见的,而且实现方法也有很多种,百度找了一下各种实现方法,但是基本是借组一些组件啥的。我就自己写了一个字符串拼组的方法,支持多维数组。仅供参考,不足之处敬请不吝赐教!

/**
*   将数组转换为xml
*    @param array $data    要转换的数组
*   @param bool $root     是否要根节点
*   @return string         xml字符串
*    @author Dragondean
*    @url    http://www.cnblogs.com/dragondean
*/
function arr2xml($data, $root = true){
    $str="";
    if($root)$str .= "<xml>";
    foreach($data as $key => $val){
        if(is_array($val)){
            $child = arr2xml($val, false);
            $str .= "<$key>$child</$key>";
        }else{
            $str.= "<$key><![CDATA[$val]]></$key>";
        }
    }
    if($root)$str .= "</xml>";
    return $str;
}

上面是实现的方法,第一个参数是你要转换的数组,第二个可选参数设定是否需要加<xml>根节点,默认是需要的。

测试代码:

$arr=array(‘a‘=>‘aaa‘,‘b‘=>array(‘c‘=>‘1234‘ , ‘d‘ => "asdfasdf"));
echo arr2xml($arr);

代码执行后的结果为:

<xml><a><![CDATA[aaa]]></a><b><c><![CDATA[1234]]></c><d><![CDATA[asdfasdf]]></d></b></xml>
时间: 2024-10-12 16:14:14

php数组转xml的递归实现的相关文章

php数组与xml互转类

代码: /** * @desc:xml与array互转 * @author [Lee] <[<[email protected]>]> * @property * data 传入的数据 * @method * arraytoxml 数组转xml 参数:data 返回:xml * arraytoxml xml转数组 参数:xml 返回:data */ class xmlarray{ private $data; # 传入数据 /* @desc:内部方法 递归转换数组成xml格式 @p

数组转xml

//数组转xml function arr2xml($arr,$node=null){     if($node == null){         $sim = new SimpleXmlElement('<?xml version="1.0" encoding="utf8"?><root></root>');     }else{         $sim = $node;     }     foreach($arr as 

数组和xml的互相转换的封装函数

/** * 数组转换为xml * * @param array $arr * @param int $level * @return string */ public static function arrayToXml($arr, $level = 0) { $s = $level == 0 ? '<?xml version="1.0" encoding="UTF-8"?>' : ''; foreach ( $arr as $key => $va

PHP数组和XML相互转换的函数

//数组转xml function ArrtoXml($arr) { if(!is_array($arr) || count($arr) == 0) return ''; $xml="<xml>"; foreach($arr as $key => $val) { if(is_numeric($val)) { $xml.="<".$key.">".$val."</".$key."&g

生成签名,随机字符串,XML转为数组,数组转XML,json封装,获取IP地址

/* * ******生成签名********* */private function getSign($params){ ksort($params); //将参数数组按照参数名ASCII码从小到大排序 foreach ($params as $key => $item) { if (!empty($item)) { //剔除参数值为空的参数 $newArr[] = $key . '=' . $item; // 整合新的参数数组 } } $stringA = implode("&

PowerShell 数组以及XML操作

PowerShell基础 PowerShell数组操作 将字符串拆分成数据的操作 cls #原始字符串 $str = "abc,def,ghi,mon" #数据定义 #$StrArray = New-Object Collections.Generic.List[string] $StrArray = @() #拆分 $StrArray = $str.Split(",") $len = $StrArray.Count Write-Host "数据中元素总数

new?动态分配数组空间?.xml

pre{ line-height:1; color:#3c3c3c; background-color:#d2c39b; font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;} .selfFuc{color:#800080;} .bool{color:#d2576f;} .condition{color:#000080;font-weight:bold;} .key{color:#000080;} .

PHP 数组转XML 格式

function buildXml( $data, $wrap= 'xml' ){ $str = "<{$wrap}>"; if( is_array( $data ) ){ if( hasIndex( $data ) ){ foreach( $data as $k=>$v ){ $str .= buildXml( $v, $k ); } }else{ foreach( $data as $v ){ foreach( $v as $k1=>$v1 ) $str .

php数组转xml

代码: <?php function arraytoxml($arr = array(),$charset='utf8') { $xml ='<!--xml version="1.0" encoding="'.$charset.'" -->'; $xml .= change($arr); return $xml; } function change($source) { $string=""; foreach($source a