MarkJane
4/12/2017 - 8:18 AM

将数组转化为xml格式 将xml转成Json格式

将数组转化为xml格式 将xml转成Json格式

/**
 * 将数组转化为xml格式
 *
 * @param	array	$arr		数组
 * @param	bool	$htmlon		是否开启html模式
 * @param	bool	$isnormal	是否不全空格
 * @param	intval	$level		当前级别
 * @return	string
 */
function dr_array2xml($arr, $htmlon = TRUE, $isnormal = FALSE, $level = 1) {
    $space = str_repeat("\t", $level);
    $string = $level == 1 ? "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<result>\r\n" : '';
    foreach ($arr as $k => $v) {
        if (!is_array($v)) {
            $string.= $space . "<$k>" . ($htmlon ? '<![CDATA[' : '') . $v . ($htmlon ? ']]>' : '') . "</$k>\r\n";
        } else {
            $name = is_numeric($k) ? 'item' . $k : $k;
            $string.= $space . "<$name>\r\n" . dr_array2xml($v, $htmlon, $isnormal, $level + 1) . $space . "</$name>\r\n";
        }
    }
    $string = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $string);
    return $level == 1 ? $string . '</result>' : $string;
}

//利用simplexml 将XML转成Json 
public function xml_to_json($source) { 
    if(is_file($source)){ //传的是文件,还是xml的string的判断 
        $xml_array=simplexml_load_file($source); 
    }else{ 
        $xml_array=simplexml_load_string($source); 
    } 
    $json = json_encode($xml_array); //php5,以及以上,如果是更早版本,请查看JSON.php 
    return $json; 
}