Я давно хотел сделать RSS-ридер (просто для удовольствия), но я не имею ни малейшего представления о том, с чего начать. Я ничего не понимаю о RSS. Есть ли хорошие учебники по RSS и как реализовать его в приложении (а не учебник о том, как сделать RSS-ридер, это будет слишком легко).
Как я могу начать создавать С# RSS Reader?
Ответ 1
См
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 есть много всего, что делает grunt-work синтаксического анализа и представления фидов; нетрудно написать 30-строчное приложение, которое принимает URL-адрес фида и загружает фид и печатает название и автор всех элементов, например. (Работает для RSS 2.0 (не других!) Или Atom.)
Ответ 2
Если вы сосредоточены на создании RSS Reader, а не на синтаксическом анализе RSS, вы можете делегировать создание/чтение RSS-каналов, используя эту бесплатную RSS-библиотеку под названием Argotic на CodePlex.com
Ответ 3
В качестве другого плаката рекомендуется использовать класс SyndicationFeed и Argotic.
Если производительность является проблемой, класс SyndicationFeed будет намного лучше. Я оценил это как примерно в 9 раз быстрее, чем Argotic на моем оборудовании.
Проблема, с которой я столкнулась с классом SyndicationFeed, заключалась в ее способности успешно анализировать любой случайный канал из сети. Это происходит с ошибкой XmlException на удивление часто.
Для моих целей я придерживаюсь Argotic. В конце концов, это с открытым исходным кодом, поэтому я могу всегда вносить изменения, если мне нужно.
Ответ 4
Я предлагаю вам использовать этот
RSS.NET - это библиотека классов .NET с открытым исходным кодом для RSS-каналов. Он предоставляет многоразовую объектную модель для синтаксического анализа и записи RSS-каналов. Он полностью совместим с версиями RSS 0.90, 0.91, 0.92 и 2.0.1, реализующими все конструкции.
Поскольку стандартный канал синдикации не поддерживает другие версии rss.
Ответ 5
Вам нужно работать со спецификацией XML XML: http://cyber.law.harvard.edu/rss/rss.html
Ответ 6
Если вы пишете полнофункционального читателя без использования какой-либо библиотеки, также подумайте, что есть ATOM фиды для синтаксического анализа.
Ответ 7
RSS сам по себе очень прост. Просто XML-описание канала и список элементов на этом канале (возможно, с файлами, прикрепленными к каждому элементу). Следить за обновлениями немного сложно, и управлять кодировками и сообщениями/датами тоже сложно. Настоящий кошмар - это разные "толкования" формата RSS, используемые разными сайтами. Если вы действительно пишете устройство чтения каналов, вы можете начать с разбора Atom, так как это более стандартизованный формат и может ускорить работу с хорошим дизайном для перехода в RSS. Но на самом деле вам нужно просто использовать библиотеку синтаксического анализа RSS - желательно самую совместимую, доступную (но не платите за библиотеку RSS, они достаточно распространены).
Ответ 8
RSS - это диалект XML, поэтому, если вы знаете XML, у вас есть часть проблемы. Если вы хотите начать свой проект, подумайте над уже открытыми проектами с открытым исходным кодом:
http://www.codeplex.com/site/search?projectSearchText=RSS%20Reader
CodePlex (выше) - это хорошее место для начала, так как большинство проектов будут на С#.
Ответ 9
Рассмотрите возможность чтения исходного кода для RSS Bandit, который является С# Winforms (возможно, скоро WPF) RSS Reader.
Вы должны получить хорошие идеи, просто перейдя через приложение.
Ответ 10
Я довольно часто работал с RSS и обнаружил, что каналы ATOM, как правило, легче анализировать с использованием класса RssSyndication. Для спецификаций RSS 2.0, если канал действительно действителен, тогда он также легко загружает XDocument из URI и анализирует данные по мере необходимости.
Ответ 11
Если вы не можете использовать System.ServiceModel.Syndication.Syndicationfeed
, например, потому что используете PCL (Portable Class Library). Я написал один: FeedParserPCL. Вы можете найти его на NuGet.