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

Тема в разделе "PHP", создана пользователем guru85, 26 янв 2012.

Модераторы: latteo
  1. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    При парсинге 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 или подгружать новую.
     
  2. Vanusha

    Vanusha Создатель

    Регистр.:
    26 янв 2012
    Сообщения:
    11
    Симпатии:
    1
    попробуй регулярками проверять на наличие заголовка в xml-ке
     
  3. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    Так ведь я получаю xml так $xml = new SimpleXMLElement("http://www.xxxx.ru/news/rss/", NULL, TRUE); если впереди поставить регулярку то придется либо курлом либо еще как то подгружать отдельно и получится, что два раза подгружу rss, а за два раза опять же либо повезет либо скрипт встанет, как нибудь бы обойти ошибку, типа если error то один хрен цикл продолжить сначала.
     
  4. Vanusha

    Vanusha Создатель

    Регистр.:
    26 янв 2012
    Сообщения:
    11
    Симпатии:
    1
    ну вот у меня такая же проблема была. библиотека кривая просто.
     
  5. ramses21

    ramses21 Постоялец

    Регистр.:
    20 июл 2008
    Сообщения:
    107
    Симпатии:
    16
    Вообще-то в ошибке явно указана проблема.
    А точнее: в xml документах перед первым тегом < не может быть ничего лишнего, даже пробела.
    Обычно такая ошибка появляется у тех, кто сам генерирует xml документы средствами php
     
  6. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    дык понятно, что косяк, но xml то не мой я его парсинг делаю, и он через рас то рабочий то вот такая ошибка. Вопрос в том, как эту ошибку проигнорировать, не тормозя скрипт.
     
  7. d1mka

    d1mka Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    92
    Симпатии:
    23
    НЕ использовать SimpleXMLElement
     
  8. Vladimir-AWM

    Vladimir-AWM Писатель

    Регистр.:
    11 фев 2012
    Сообщения:
    5
    Симпатии:
    0
    Попробуйте так:
    Через CURL или file_get_contents получаем RSS в переменную $content, потом избавляемся от ошибки в этой переменной и далее $content = new SimpleXMLElement($content); и работаем через SimpleXML.
     
  9. Yfo

    Yfo Создатель

    Регистр.:
    30 окт 2007
    Сообщения:
    43
    Симпатии:
    4
    SimpleXML подойдет только для самых простых xml-документов. Если в документе ошибки или сложная структура, то лучше использовать более сложные парсеры. Для Rss, например, есть MagpieRSS.
    Как вариант, загружать документ, обрабатывать его строковыми функциями, исправляя ошибки, затем давать на вход SimpleXML. Если же нужно просто достать контент из RSS-ленты, можно заюзать регулярки.
     
  10. Vladimir-AWM

    Vladimir-AWM Писатель

    Регистр.:
    11 фев 2012
    Сообщения:
    5
    Симпатии:
    0
    А как обрабатывать сложные xml документы в php (варианта два, насколько я знаю, - DOM XML и SimpleXML, регулярки регулярками, это не обработчики XML документов)? Я всегда думал что SimpleXML пошло не от того что он может обрабатывать, как с перевода на русский, - легкий, а от слова - просто.