Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: подскажите пожалуйста как распарсить переменную в XML

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
scuter
Отправлено: 28 Января, 2008 - 20:45:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




Здравствуйте,
мне необходимо распарсить переменную в XML вариант для отправки через AJAX,
для этого я написал функцию,
CODE (text):
скопировать код в буфер обмена
  1.  
  2. function xml_parse($get)
  3. {
  4.         $xml = '';
  5.         if(is_array($get))
  6.         {
  7.                 foreach($get as $key => $val)
  8.                 {
  9.                         if(is_array($val))
  10.                         {
  11.                                 $xml .= '<'.$key.'>'.xml_parse($val).'<'.$key.'>
  12.                                 ';
  13.                         }
  14.                         else
  15.                         {
  16.                                 $xml .= '<'.$key.'>'.$val.'<'.$key.'>
  17.                                 ';
  18.                         }
  19.                 }
  20.                 return $xml;
  21.         }
  22.         else
  23.         {
  24.                 return '';
  25.         }
  26. }
  27.  

в итоге ничего не получается,
вот такой код выдаёт ошибку,
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $code = Array
  3.         (
  4.             'id' => 3,
  5.             'vid' => 0,
  6.             'name' => 'global',
  7.             'textpage' => 'this is text',
  8.             'Keywords' => 'Keywords',
  9.             'description' => 'description'
  10.         );
  11. $xml = '<?xml version="1.0" encoding="UTF-8"?>
  12. <response success="true">
  13. <contact>
  14. '.xml_parse($code).'
  15. </contact>
  16. </response>';
  17. print iconv("CP1251", "UTF-8", $xml);
  18.  

в чём проблема я так и не могу понять,
если кто работал с парсингом XML,
то помогите пожалуйста решить проблему.
 
 Top
evgenijj
Отправлено: 28 Января, 2008 - 21:11:54
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Попробовал выполнить твой код, и получил сообщение об ошибке
Fatal error: Cannot redeclare xml_parse() in D:\work\localhost\www\1.php on line 37
http://php.su/functions/?xml-parse

А вот так работает
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $code = Array
  3. (
  4. 'id' => 3,
  5. 'vid' => 0,
  6. 'name' => 'global',
  7. 'textpage' => 'this is text',
  8. 'Keywords' => 'Keywords',
  9. 'description' => 'description'
  10. );
  11. $xml = '<?xml version="1.0" encoding="UTF-8" ?>
  12. <response success="true">
  13. <contact>
  14. '.xml_parse2($code).'
  15. </contact>
  16. </response>';
  17. print_r (iconv("CP1251", "UTF-8", $xml));
  18.  
  19. function xml_parse2($get)
  20. {
  21.   $xml = '';
  22.   if(is_array($get))
  23.   {
  24.     foreach($get as $key => $val)
  25.     {
  26.       if(is_array($val))
  27.         $xml .= '<'.$key.'>'.xml_parse($val).'<'.$key.'>';
  28.       else
  29.         $xml .= '<'.$key.'>'.$val.'<'.$key.'>';
  30.     }
  31.     return $xml;
  32.   }
  33.   else
  34.   {
  35.     return '';
  36.   }
  37. }
  38. ?>

Результат
CODE (text):
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <response success="true">
  3. <contact>
  4. <id>3<id><vid>0<vid><name>global<name><textpage>this is text<textpage><Keywords>Keywords<Keywords><description>description<description>
  5. </contact>
  6. </response>
 
 Top
scuter
Отправлено: 28 Января, 2008 - 21:48:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




прошу прощения нашёл ошибку,
CODE (text):
скопировать код в буфер обмена
  1.  
  2. function xml_parse2($get)
  3. {
  4.   $xml = '';
  5.   if(is_array($get))
  6.   {
  7.     foreach($get as $key => $val)
  8.     {
  9.       if(is_array($val))
  10.         $xml .= '<'.$key.'>'.xml_parse2($val).'</'.$key.'>';
  11.       else
  12.         $xml .= '<'.$key.'>'.$val.'</'.$key.'>';
  13.     }
  14.     return $xml;
  15.   }
  16.   else
  17.   {
  18.     return '';
  19.   }
  20. }
  21.  

завершающие теги неправильно указал.

(Отредактировано автором: 28 Января, 2008 - 21:54:07)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB