iPhone RSS Reader - parseXML не загружает некоторые XML-каналы - PullRequest
2 голосов
/ 25 марта 2009

Я использую ПРОСТОЙ пример чтения RSS, найденный в http://theappleblog.com/2008/08/04/tutorial-build-a-simple-rss-reader-for-iphone/

Он использует parseXML для загрузки RSS-каналов.

Вот проблема, с которой я столкнулся. В следующем примере RSS-канала возникли проблемы при загрузке канала. Приходит с ошибкой, что он не может подключиться. Однако на моем Mac RSS Reader он работает нормально, поэтому я знаю, что ссылка хорошая.

Есть идеи, почему он не может загрузить этот конкретный канал, но может нормально загружать другие?

http://www.okstate.com/rss.dbml?db_oem_id=200&media=news

Спасибо.

Ответы [ 5 ]

4 голосов
/ 15 мая 2010

Я только что выпустил парсер RSS / Atom с открытым исходным кодом для iPhone и, надеюсь, он может пригодиться.

Я бы тоже хотел услышать ваши мысли об этом!

2 голосов
/ 20 апреля 2009

По моему опыту, разметка HTML в большинстве случаев приводит к сбою парсера RSS. У меня возникла такая проблема со многими классами парсеров, с которыми я сталкивался (в поисках последнего, который я не нашел)

Я предполагаю, что такие объекты, как

's

несут ответственность за ваш сбой. Обычно так было с моими сбоями. Это также привело к моему решению создать «прокси-сервер» для предварительного анализа XML перед отправкой его на iPhone (что дает мне преимущество в кэшировании, масштабировании и некоторых других вещах). Я верю, что есть надежные решения, но всегда сложно написать парсер для такого количества реализаций RSS.

P.S: W3C проверяет этот канал как «действительный», так что это действительно «наша» проблема ..

2 голосов
/ 22 апреля 2009

Ваша проблема может быть связана с:

  1. Символы Юникода (т.е. я вижу некоторые o с двумя точками над ними в ленте)
  2. Ваш код не соответствует разделам CDATA

Чтобы выяснить, в чем дело, сохраните файл канала на локальный диск и загрузите его с помощью кода, чтобы убедиться, что произошла ошибка.

Выполните бинарный поиск по файлу, чтобы выяснить, является ли проблема причиной возникновения конкретной записи RSS (т.е. удалите все, кроме первой записи rss, и посмотрите, существует ли проблема. Если это так, то проблема существует, если не помещает половину записей rss обратно в файл и повторяет)

1 голос
/ 01 мая 2009

Существует много RSS-каналов, которые содержат недопустимый XML, обычно потому, что они были взломаны на стороне сервера с помощью шаблонов HTML кем-то, кто не понимал XML. Я видел неправильно экранированный (или не экранированный) контент поста HTML, отсутствующие закрывающие теги, плохо вложенные теги и т. Д.

Если вы хотите иметь возможность разбирать произвольные каналы, вы должны очистить плохой XML. Обычным способом является использование библиотеки "htmlTidy", которая входит в состав ОС. Это может очистить как XML, так и HTML.

В этом примере вы используете NSXMLParser - я понятия не имею, почему. Это низкоуровневый API, и он не поддерживает приведение в порядок. Я бы предложил вместо этого использовать NSXMLDocument. В этом API есть флаг, который скажет ему использовать tidy при разборе XML. Этот API также возвращает XML в виде удобного дерева элементов, с которым легко работать.

1 голос
/ 25 марта 2009

У меня возникла похожая проблема. Я еще не определил ответ, но заметил, что RSS 2 имеет тенденцию анализировать более успешно, чем остальные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...