数组与xml相互转换

数组l转换为xml的例子

function arrayToXml($arr,$dom=0,$item=0){
    if(!$dom){
        $dom=new DOMDocument("1.0");
    }
    if(!$item){
        $item=$dom->createElement("root");
        $dom->appendChild($item);
    }
    foreach ($arr as $key => $val) {
        $itemx=$dom->createElement(is_string($key)?$key:"item");
        $item->appendChild($itemx);
        if(!is_array($val)){
            $text=$dom->createTextNode($val);
            $itemx->appendChild($text);
        }else{
            arrayToXml($val,$dom,$itemx);
        }
    }
    return $dom->saveXML();
}
// $arr = array();
// $arr['user'] = '小明';
// $arr['age'] = 20;
// $arr['sexy'] = '女';
// echo '数组转xml第一种:'.arrayToXml($arr);
// echo "</br>";
function arrayToXml2($arr){
    $xml="<xml>";
    foreach($arr as $key=>$val){
        if(is_array($val)){
            $xml.="<".$key.">".arrayToXml($val)."</".$key.">";
            // <xml><$key><$val></$key></xml>
        }else{
            $xml.="<".$key.">".$val."</".$key.">";
            // <xml><$key><$val></$key></xml>
        }
    }
    $xml.="</xml>";
    return $xml;
}
// $arr = array();
// $arr['user'] = '小明';
// $arr['age'] = 20;
// $arr['sexy'] = '男';
// echo '数组转xml第二种:'.arrayToXml2($arr);

下面是xml转为数组

// xml转array
function xmlToArray($xml){
    libxml_disable_entity_loader(true);
  //simplexml_load_string 转换形式良好的 XML 字符串为 SimpleXMLElement 对象,然后输出对象的键和元素
$xmlstring=simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
  // json_decode接受一个 JSON 编码的字符串并且把它转换为 PHP 变量
    // json_encode返回字符串,包含了 value 值 JSON 形式的表示。
$val=json_decode(json_encode($xmlstring),true); return $val; } $xmlstring='<root><user>小明</user><age>100</age></root>'; $arr=xmlToArray($xmlstring); print_r($arr);//Array ( [user] => 小明 [age] => 100 )

综合例子

$arr = array();
$arr['user']='小明'; 
$arr['age']=20;
$arr['fam']=array('姐姐'=>22,'弟弟'=>18,'哥哥'=>array('儿子'=>8,'女儿'=>6));
$arr['date']='2016-06-01';
$result = arrayToXml($arr); 
var_dump($result);//转化为$xmlstring
$xmlstring = '<root><user>小明</user><age>20</age><fam><姐姐>22</姐姐><弟弟>18</弟弟><哥哥><儿子>8</儿子><女儿>6</女儿></哥哥></fam><date>2016-06-01</date></root>'; 
$arr = xmlToArray($xmlstring);
var_dump($arr);//结果是二维数组

xml www.runoob.com/xml/xml-tutorial.html

json-decode php.net/manual/zh/function.json-decode.php

json_encode php.net/manual/zh/function.json-encode.php

simplexml_load_string www.runoob.com/php/func-simplexml-load-string.html

原文地址:https://www.cnblogs.com/aten/p/8633307.html