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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Array to XML 
:(
    Опции темы
bubl1k
Дата 9.9.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

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



Код

    function xmltoarray($item) {
        foreach($item as $name => $child) {
                 $attr = (array)$child->attributes();

                 $array[$name]['@attributes'] = $attr['@attributes'];
                 $array[$name]['@content'][] = xmltoarray($child);
        }
        
        return isset($array) ? $array : (array)$item;
    }

    $xml = simplexml_load_file($filename);
 
    $array = xmltoarray($xml);


Вот таким образом я преобразую xml в массив, но уже пару часов мучаюсь и никак не выходит написать функцию которая конвертирует этот массив обратно в XML.

Прошу помощи г-да.

Готов выдать 300р на пиво тому кто напишет.

Это сообщение отредактировал(а) bubl1k - 9.9.2010, 16:04
PM MAIL ICQ   Вверх
SneG0K
Дата 9.9.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



PM WWW Skype   Вверх
bubl1k
Дата 9.9.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

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



Это какая-то ерунда.

Мне нужен конверт в xml массива в формате который выдает моя функция  smile 
PM MAIL ICQ   Вверх
Алексей
Дата 9.9.2010, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 19.6.2006

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



На 

Код

function www($array){
    foreach ($array as $name=>$child){
        if($name){
            $attr = '';
            if(is_array($child['@attributes'])){
                foreach($child['@attributes'] as $key=>$value){
                    $attr .= ' '.$key.'="'.$value.'"';
                }
            }

            $txt .= "<$name$attr>";
            $txt .= www($child['@content'][0]);
            $txt .= "</$name>";    
        }
        if(!is_array($child)) $txt .= $child;
    }
    return $txt;
}


Генерит XML строку типа '<a><b></b></a>'. Дальше делай с ней, что хочешь. 

P.S. в твоей функции ошибка. Она теряет внешней элемент.
Т.е. если XML вида
Код

<a>
    <b>
         <c>text</c>
         <c>stuff</c>
   </b>
   <d>
         <c>code</c>
   </d>
</a>
 

То в масиве пропадет элемент <a>. В сдедствие этого не получится создать экземпляр simpleXml из строки. $xml = new SimpleXMLElement($string);

С тебя 300 руб smile
PM MAIL   Вверх
bubl1k
Дата 10.9.2010, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

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



Алексей, ваша функция не прошла обкатку.

Код

<control>
    <banner type="tab">
        <text type="input">Раз</text>
        <text type="input">Два</text>
    </banner>

    <banner type="tab">
        <text type="input">Раз</text>
        <text type="input">Два</text>
        <somebody type="group">
               <text type="input">Раз</text>
        </somebody>
    </banner>
        
</control>


Это сообщение отредактировал(а) bubl1k - 10.9.2010, 05:10
PM MAIL ICQ   Вверх
Алексей
Дата 10.9.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 19.6.2006

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



 smile А вы xml правильный дайте и все пройдет.
Скажем 
Код

var_dump(simplexml_load_file('test.xml'))

Выведет false;

Это сообщение отредактировал(а) Алексей - 10.9.2010, 10:23
PM MAIL   Вверх
bubl1k
Дата 10.9.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

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



Код

    function xmltoarray($item) {
        
        foreach($item as $name => $child) {
                 $attr = (array)$child->attributes();
                 $array[][$name] = array("@content" => xmltoarray($child), "@attributes" => isset($attr['@attributes']) ? $attr['@attributes'] : '');
        }
        
        return isset($array) ? $array : array((string)$item);
    }


    function arraytoxml($array, &$xml = FALSE) {

        if($xml === FALSE) {
            $xml = new SimpleXMLElement("<control></control>");
        }

        foreach ($array as $name => $item) {

                    if(isset($item["@attributes"])) {
                        $xml->addChild($name);
                        arraytoxml($item, $xml->$name);
                    }
                    else {
                        if(is_array($item)) arraytoxml($item, $xml);
                    }

        }

        return $xml;
    }

    $filename = 'xml/static.xml';
    
    $xml = simplexml_load_file($filename);
    $array = xmltoarray($xml);
    $xml = arraytoxml($array);
    
    print_r($array);
    print_r($xml);


В общем я остановился на таком коде, если кто успеет доработать раньше меня его найдет обещанная награда.
PM MAIL ICQ   Вверх
bubl1k
Дата 13.9.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

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



В общем получилось эту задачу решить самому вышло вот что - http://paste.ideaslabs.com/show/lReFz2kFM
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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