/**
 * xml转化为数组
 * @param  [type] $xml [description]
 * <xml>
 *     <appid><![CDATA[wx495813085bb41c7a]]></appid>
 *     <attach><![CDATA[4757,10]]></attach>
 * </xml>
 * @return [type]      [description]
 *Array
(
    [0] => Array
        (
            [tag] => APPID
            [attributes] => 
            [val] => wx495813085bb41c7a
            [level] => 2
        )

    [1] => Array
        (
            [tag] => ATTACH
            [attributes] => 
            [val] => 4757,10
            [level] => 2
        )
)
 * 
 */
function xml_to_array($xml){
     // 创建解析器
   $parser = xml_parser_create();
     // 将 XML 数据解析到数组中
   xml_parse_into_struct($parser, $xml, $vals, $index);
     // 释放解析器
   xml_parser_free($parser);
     // 数组处理
   $arr = array();
   $t=0;
   foreach($vals as $value) {
       $type = $value['type'];
       $tag = $value['tag'];
       $level = $value['level'];
       $attributes = isset($value['attributes'])?$value['attributes']:"";
       $val = isset($value['value'])?$value['value']:"";
       switch ($type) {
          case 'open':
          if ($attributes != "" || $val != "") {
             $arr[$t]['tag'] = $tag;
             $arr[$t]['attributes'] = $attributes;
             $arr[$t]['level'] = $level;
             $t++;
         } 
         break;
         case "complete":
         if ($attributes != "" || $val != "") {
             $arr[$t]['tag'] = $tag;
             $arr[$t]['attributes'] = $attributes;
             $arr[$t]['val'] = $val;
             $arr[$t]['level'] = $level;
             $t++;
         } 
         break;
     } 
 } 
 return $arr;
}