首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

问一个关于xml转php 数组的有关问题

2013-09-06 
问一个关于xml转php 数组的问题我现在要接收一个xml的内容,不是文件接收的文件内容如下格式??xml version

问一个关于xml转php 数组的问题
我现在要接收一个xml的内容,不是文件
接收的文件内容如下格式

?<?xml version="1.0" encoding="utf-8"?><pReq><ax>0000</ax><at>ax0000111222333442</at><ab>12345</ab><an>测试</an><ao>4021000028853283</ao><ad>20130828</ad><pMemo1>备注1</pMemo1><pMemo2>备注2</pMemo2><pMemo3>备注3</pMemo3></pReq>


怎么直接把这段代码转换为php数组,这个不是个文件,是个变量

xml php
[解决办法]
找一个xml_to_array的函数 比如 

http://www.cnblogs.com/heiing/archive/2009/12/31/1637015.html

然后使用它


function xml_to_array( $xml )
{
    $reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/";
    if(preg_match_all($reg, $xml, $matches))
    {
        $count = count($matches[0]);
        $arr = array();
        for($i = 0; $i < $count; $i++)
        {
            $key = $matches[1][$i];
            $val = xml_to_array( $matches[2][$i] );  // 递归
            if(array_key_exists($key, $arr))
            {
                if(is_array($arr[$key]))
                {
                    if(!array_key_exists(0,$arr[$key]))
                    {
                        $arr[$key] = array($arr[$key]);


                    }
                }else{
                    $arr[$key] = array($arr[$key]);
                }
                $arr[$key][] = $val;
            }else{
                $arr[$key] = $val;
            }
        }
        return $arr;
    }else{
        return $xml;
    }
}
// Xml 转 数组, 不包括根键
function xmltoarray( $xml )
{
    $arr = xml_to_array($xml);
    $key = array_keys($arr);
    return $arr[$key[0]];
}

$xml = '<?xml version="1.0" encoding="utf-8"?><pReq><ax>0000</ax><at>ax0000111222333442</at><ab>12345</ab><an>测试</an><ao>4021000028853283</ao><ad>20130828</ad><pMemo1>备注1</pMemo1><pMemo2>备注2</pMemo2><pMemo3>备注3</pMemo3></pReq>';

var_export(xmltoarray($xml));



结果

array (
  'ax' => '0000',
  'at' => 'ax0000111222333442',
  'ab' => '12345',
  'an' => '测试',
  'ao' => '4021000028853283',
  'ad' => '20130828',
  'pMemo1' => '备注1',
  'pMemo2' => '备注2',
  'pMemo3' => '备注3',
)


据此博主说他这个函数还不够完善,请慎用

热点排行