Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML -> Array & Array -> XML, пример кода 
:(
    Опции темы
Diesel Draft
Дата 30.8.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



Есть простой XML. Как самым бистим способом перетворить в масив

Пример

Код

<cart>
      <user>User1</user>
      <session>1</session>
        <item>
            <type>MPrivate</type>
            <to>user2</to>
            <text>some text</text>
        </item>
        <item>
            <type>MPublic</type>
            <to>user2</to>
            <text>some text</text>
        </item>        
</cart>


Array
(
    [cart] => Array
        (
            [user] => User1
            [session] => 1
            [item] => Array
                (
                    [type] => MPublic
                    [to] => user2
                    [text] => some text
                )

        )

)





Это сообщение отредактировал(а) Diesel Draft - 30.8.2006, 16:19


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
ewolf
Дата 30.8.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: нет
Всего: 18



Код

class xml2array{

   function readxmlfile($xmlfile){ // reads XML file in and returns it
     $xmlstream =fopen($xmlfile,r);
     $xmlraw=fread($xmlstream,1000000);
     fclose($xmlstream);
     return $xmlraw;
   }

   function parseXMLintoarray ($xmldata){ // starts the process and returns the final array
     $xmlparser = xml_parser_create();
     xml_parse_into_struct($xmlparser, $xmldata, $arraydat);
     xml_parser_free($xmlparser);
     $semicomplete = $this->subdivide($arraydat);
     $complete = $this->correctentries($semicomplete);
     return $complete;
   }

   function subdivide ($dataarray, $level = 1){
     foreach ($dataarray as $key => $dat){
       if ($dat[level] === $level && $dat[type] === "open"){
         $toplvltag = $dat[tag];
       } elseif ($dat[level] === $level && $dat[type] === "close" && $dat[tag]=== $toplvltag){
         $newarray[$toplvltag][] = $this->subdivide($temparray,($level +1));


         unset($temparray,$nextlvl);
       } elseif ($dat[level] === $level && $dat[type] === "complete"){
         $newarray[$dat[tag]]=$dat[value];
       } elseif ($dat[type] === "complete"||$dat[type] === "close"||$dat[type] === "open"){
         $temparray[]=$dat;
       }
     }
     return $newarray;
   }
function correctentries($dataarray){

if (is_array($dataarray)){
  $keys =  array_keys($dataarray);
  if (count($keys)== 1 && is_int($keys[0])){
   $tmp = $dataarray[0];
   unset($dataarray[0]);
       $dataarray = $tmp;
  }
  $keys2 = array_keys($dataarray);
  foreach($keys2 as $key){
   $tmp2 = $dataarray[$key];
   unset($dataarray[$key]);
   $dataarray[$key] = $this->correctentries($tmp2);
   unset($tmp2);
  }
  }
return $dataarray;
}
}


PM MAIL ICQ   Вверх
Diesel Draft
Дата 30.8.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



сенк, зара попробую


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.