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 :: Парсинг RSS (SAX)

 PHP.SU

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


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

> Без описания
teddy
Отправлено: 12 Августа, 2013 - 17:46:51
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




Приветствую. Вообщем пытаюсь спарсить всякие RSS ленты, при помощи SimpleXML все проходит успешно, а вот в SAX какая то неразбериха. То есть получается либо забрать результат целиком, либо вообще ничего. Поясню подробнее:

Если к примеру в SimpleXML можно вывести результат отдельно типа echo $item->title;

То при парсинге с помощью SAX такое не прокатывает, почему? Или он может получать только единый текст без возможности разбиения его на части? Вот код:

PHP:
скопировать код в буфер обмена
  1. function onText($parser, $text)
  2. {
  3.     echo $text;
  4. }
  5.  
  6. $parser = xml_parser_create("UTF-8");
  7. xml_set_character_data_handler($parser, "onText");
  8. xml_parse($parser, file_get_contents("file.xml"));
  9.  


Можно ли как то по отдельности выводить результат? Чую надо смотреть в сторону xml_set_element_handler

Но как именно все это провернуть плохо представляю, если конечно такое возможно

Остановился приблизительно на таком варианте:

Спойлер (Отобразить)


Спасибо заранее

(Отредактировано автором: 12 Августа, 2013 - 17:53:12)

 
 Top
armancho7777777 Супермодератор
Отправлено: 12 Августа, 2013 - 18:54:45
Post Id



Активный участник


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


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




xml_parse_into_struct ?

(Отредактировано автором: 12 Августа, 2013 - 19:12:20)

 
 Top
teddy
Отправлено: 12 Августа, 2013 - 19:48:58
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


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




armancho7777777
Спасибо большое, то, что нужно Улыбка

Результат:
PHP:
скопировать код в буфер обмена
  1.  
  2. $parser = xml_parser_create("UTF-8");
  3. $str = file_get_contents("test.xml");
  4. xml_parse_into_struct($parser, $str, $vals, $index);
  5. xml_parser_free($parser);
  6.  
  7. echo $vals[2]["value"]; //например
  8.  


Вдруг кому понадобится...
Ориентироваться по выбору значений элементов массива можно следующим образом:

PHP:
скопировать код в буфер обмена
  1. echo "<pre>";
  2. print_r($vals);
  3. echo "</pre>";
  4.  


Ну и выбираем по результату то, что нужно...

Спасибо ещё раз armancho7777777
(Добавление)
Но это так.. для развития кругозора

Походу SimpleXML самый удобный и простой
 
 Top
armancho7777777 Супермодератор
Отправлено: 12 Августа, 2013 - 20:07:21
Post Id



Активный участник


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


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




Не за что.

teddy пишет:
Походу SimpleXML самый удобный и простой

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB