Как я могу начать делать RSS-ридер C#?

1125 Я хотел бы продолжить ответ Брайана Маккатона. Я полагаю, что есть несколько различных (очень философских) аспектов, которые стоит рассмотреть.

Можно утверждать, что причина, по которой вы можете наследовать непосредственно из Throwable, заключается в том, что система типов Java не имеет способа запретить такое расширение, и что иерархия Throwable не была разработана для добавления большего количества классов, которые не подклассы Error или Exception. Вероятно, это причина того, что такие вещи, как NonLocalReturnException или BreakException были первоначально подтипами RuntimeException, а не напрямую Throwable.

Другой момент заключается в том, что при введении такого маркера это должен был быть trait. И снова в системе типов Scala нет способа обеспечить, чтобы классы, которые будут смешиваться в этой черте, были , а не подклассами в Exception.

Вместе эти два факта означают, что, возможно, исторически существовали подклассы ControlThrowable (тогда ControlException), которые являются подклассами Exception. Имея это в виду, становится ясно, что наборы типов, пойманные в этих двух случаях, не были непересекающимися по замыслу. Да, почти через год после введения ControlException он был изменен на ControlThrowable , но в тот момент не было способа обеспечить выполнение всех других (пользовательских) подклассов сделать то же самое переключение.

Еще один философский момент в отношении такого кода, как в этом примере, заключается в том, что даже если в программе нет подтипов ControlThrowable, которые являются подтипами Exception, и первый случай действительно не влияет на поведение Во втором случае (как это наиболее вероятно сегодня), он все еще показывает, что разработчик задумался над этой конкретной деталью. И, очевидно, код должен быть написан как для других людей, так и для компьютеров.

Как последнее примечание, сегодня вы, вероятно, должны использовать NonFatal , который вместо этого включает тест для ControlThrowable.

49
задан Kredns 23 January 2013 в 22:32
поделиться

9 ответов

См.

http://msdn.microsoft.com/en-us/library/bb943474.aspx

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx

http://msdn.microsoft.com/en-us/library/bb943480.aspx

В основном существует много материала в платформе.Net 3.5, которая делает трудную работу парсинга и представления подачи; не трудно записать приложение с 30 строками, которое берет в URL канала и загружает канал и печатает заголовок и автора всех объектов, например. (Работы для RSS 2.0 (не другие!) или Atom.)

50
ответ дан skolima 7 November 2019 в 11:50
поделиться

Если Вы фокусируетесь на создании RSS-ридер а не на логике синтаксического анализа RSS, Вы могли бы хотеть делегировать каналы RSS создания/чтения, пользующиеся этой свободной Библиотекой RSS, названной Арготический на CodePlex.com

11
ответ дан dance2die 7 November 2019 в 11:50
поделиться

Необходимо работать со спецификацией XML RSS: http://cyber.law.harvard.edu/rss/rss.html

0
ответ дан Marco Bettiolo 7 November 2019 в 11:50
поделиться

Если Вы пишете, что полнофункциональный читатель, не пользуясь никакой библиотекой, также думает, что существует подача ATOM к синтаксическому анализу.

0
ответ дан Julien Roncaglia 7 November 2019 в 11:50
поделиться

Сам RSS действительно прост. Просто XML-описание канала и список объектов на том канале (возможно с файлами, присоединенными к каждому объекту). Отслеживание обновлений является немного хитрой, и руководящей кодировкой, и времена/даты сообщения хитро также все же. Реальный кошмар является всеми различными "интерпретациями" формата RSS, который используют различные сайты. Если Вы действительно пишете программу чтения новостных лент, Вы могли бы хотеть запуститься с парсинга Atom, поскольку это - более стандартизированный формат и могло бы заставить Вас далее быстрее с хорошим дизайном отклоняться в RSS от. Но действительно, необходимо просто пользоваться библиотекой парсинга RSS - предпочтительно самая совместимая доступная (но не платите за библиотеку RSS; они достаточно распространены).

0
ответ дан Lee B 7 November 2019 в 11:50
поделиться

RSS является диалектом XML, поэтому если Вы знаете XML, у Вас есть часть решенной проблемы. Если Вы хотите запуск на своем проекте, уже рассматриваете рассмотрение проектов с открытым исходным кодом там:

http://www.codeplex.com/site/search?projectSearchText=RSS%20Reader

CodePlex (выше) является хорошим местом для запуска, как большинство проектов будет в C#.

0
ответ дан Gregory A Beamer 7 November 2019 в 11:50
поделиться

Как рекомендовал другой автор, класс SyndicationFeed и Argotic являются лучшими альтернативами.

Если производительность является проблемой, класс SyndicationFeed будет намного лучше. Я оценил его как примерно в 9 раз быстрее, чем Argotic на моем оборудовании.

Проблема, с которой я столкнулся с классом SyndicationFeed, заключалась в его способности успешно анализировать любой случайный поток из сети. На удивление часто возникает ошибка XmlException.

В своих целях я придерживаюсь Argotic. В конце концов, это открытый исходный код, поэтому я всегда могу внести изменения, если потребуется.

6
ответ дан 7 November 2019 в 11:50
поделиться

Предлагаю вам использовать

RSS.NET - это библиотека классов .NET с открытым исходным кодом для RSS-каналов. Он предоставляет многократно используемую объектную модель для синтаксического анализа и написания RSS-каналов. Он полностью совместим с версиями RSS 0.90, 0.91, 0.92 и 2.0.1, реализуя все конструкции.

Поскольку стандартный канал распространения не поддерживает другие версии rss.

1
ответ дан 7 November 2019 в 11:50
поделиться

Рассмотрите возможность чтения исходного кода для RSS Bandit , который представляет собой программу чтения RSS Winforms (возможно, скоро WPF) на C #.

Вы должны получить несколько хороших идей, просто пройдя через приложение.

0
ответ дан 7 November 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: