Пасинг rss ошибка в simplexmlelement

guru85

Постоялец
Регистрация
24 Мар 2010
Сообщения
100
Реакции
4
При парсинге rss вылетает ошибка,
Код:
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: http://www.xxx.ru/xxx/rss/xxx/:1: parser error : Start tag expected, '<' not found in /home/dodi/public_html/xxxxxx.ru/xxxx/newsxxfinansi.php on line 19
самое интересное что эта ошибка не постоянна, при повторном запуске скрипта она может исчезнуть, и все парсится нормально, а может и непоявится, толи глюк в rss толи еще что нибудь не догружает, как можно ошибку пропустить чтобы цикл не тормозил, а продолжал дальше работать, например перезапускать опять же эту rss или подгружать новую.
 
попробуй регулярками проверять на наличие заголовка в xml-ке
 
Так ведь я получаю xml так $xml = new SimpleXMLElement("Для просмотра ссылки Войди или Зарегистрируйся", NULL, TRUE); если впереди поставить регулярку то придется либо курлом либо еще как то подгружать отдельно и получится, что два раза подгружу rss, а за два раза опять же либо повезет либо скрипт встанет, как нибудь бы обойти ошибку, типа если error то один хрен цикл продолжить сначала.
 
ну вот у меня такая же проблема была. библиотека кривая просто.
 
Вообще-то в ошибке явно указана проблема.
А точнее: в xml документах перед первым тегом < не может быть ничего лишнего, даже пробела.
Обычно такая ошибка появляется у тех, кто сам генерирует xml документы средствами php
 
дык понятно, что косяк, но xml то не мой я его парсинг делаю, и он через рас то рабочий то вот такая ошибка. Вопрос в том, как эту ошибку проигнорировать, не тормозя скрипт.
 
дык понятно, что косяк, но xml то не мой я его парсинг делаю, и он через рас то рабочий то вот такая ошибка. Вопрос в том, как эту ошибку проигнорировать, не тормозя скрипт.
НЕ использовать SimpleXMLElement
 
Попробуйте так:
Через CURL или file_get_contents получаем RSS в переменную $content, потом избавляемся от ошибки в этой переменной и далее $content = new SimpleXMLElement($content); и работаем через SimpleXML.
 
SimpleXML подойдет только для самых простых xml-документов. Если в документе ошибки или сложная структура, то лучше использовать более сложные парсеры. Для Rss, например, есть MagpieRSS.
Как вариант, загружать документ, обрабатывать его строковыми функциями, исправляя ошибки, затем давать на вход SimpleXML. Если же нужно просто достать контент из RSS-ленты, можно заюзать регулярки.
 
А как обрабатывать сложные xml документы в php (варианта два, насколько я знаю, - DOM XML и SimpleXML, регулярки регулярками, это не обработчики XML документов)? Я всегда думал что SimpleXML пошло не от того что он может обрабатывать, как с перевода на русский, - легкий, а от слова - просто.
 
Назад
Сверху