2012-06-13 29 views
5

Tôi đang cố gắng tạo trình đọc RSS đơn giản bằng cách sử dụng lớp SyndicationFeed.Xây dựng trình đọc RSS đơn giản, truy xuất nội dung

Có một số thẻ chuẩn, như <title>, <link>, <description> ... không có vấn đề gì với chúng.

Nhưng có một số thẻ khác. ví dụ: trong this feed, được tạo bởi WordPress, có thẻ <content:encoded>. Tôi nghĩ rằng có thể có các thẻ khác cho phần nội dung của các trang web khác. đúng?

Tôi muốn biết, cách tìm nội dung chính của mỗi bài đăng, có tiêu chuẩn nào không? Tôi nên tìm kiếm thẻ nào?

(ví dụ, một trang web có thể sử dụng <content:encoded> nhưng một số khác chỉ cần sử dụng <description> hoặc người sử dụng tiêu chuẩn khác ... Tôi không biết phải làm gì để lấy chính nội dung của một bài)

Tái bút: Tôi đang sử dụng mã này để kiểm tra trình đọc RSS đơn giản của mình:

 var reader = XmlReader.Create("http://feed.2barnamenevis.com/2barnamenevis"); 
     var feed = SyndicationFeed.Load(reader); 

     string s = ""; 
     foreach (SyndicationItem i in feed.Items) 
     { 
      s += i.Title.Text + "<br />" + i.Summary.Text + "<br />" + i.PublishDate.ToString() + "<br />"; 
      foreach (SyndicationElementExtension extension in i.ElementExtensions) 
      { 
       XElement ele = extension.GetObject<XElement>(); 
       s += ele.Name + " :: " + ele.Value + "<br />"; 
      } 
      s += "<hr />"; 
     } 
     return s; 
+0

Phụ thuộc vào những gì bạn muốn hỗ trợ. Phần tử nội dung không phải là một phần của RSS2.0 nhưng là của Atom (rss 4287). Đọc thông số kỹ thuật RSS2.0 http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt –

+0

Thời gian qua tôi đã thử viết một trình đọc RSS, cuối cùng tôi đã từ bỏ sau khi tôi nhận ra rằng một số lượng đáng kể các nguồn cấp dữ liệu ngoài đó không tuân theo bất kỳ tiêu chuẩn nào. Các độc giả lớn ra khỏi đó phải rất tha thứ khi đọc nguồn cấp dữ liệu. Tôi thấy nó giống như các trình duyệt đọc các trang web - nếu mọi người tuân theo các tiêu chuẩn, không có vấn đề gì, nhưng nếu không, bạn sẽ viết các công cụ tùy chỉnh cả ngày để xử lý các tình huống một lần. –

+0

@JoeEnos Ứng dụng trình đọc nguồn cấp dữ liệu khác làm gì? Họ có thể đọc mọi nguồn cấp dữ liệu. Làm thế nào họ làm điều đó ?! –

Trả lời

1

Tôi đã tìm thấy Argotic Khung Syndication (nhờ từ JoeEnos).

Argotic có nhiều Tiện ích mở rộng, có thể được sử dụng để xử lý các phần tử không chuẩn. Ví dụ: Bạn có thể sử dụng Argotic.Extensions.Core.SiteSummaryContentSyndicationExtension để truy xuất <content:encoded>. Bạn có thể xem ví dụ here. (Nếu ví dụ mà trả null cho nội dung, bạn chỉ nên sử dụng MyRssItem.Description)

Một số phần mở rộng hữu ích khác là WellFormedWebCommentsSyndicationExtension (để lấy ý kiến ​​url thức ăn chăn nuôi) và SiteSummarySlashSyndicationExtension (để lấy ý kiến ​​đếm).

0

Phụ thuộc vào những gì bạn muốn hỗ trợ. Phần tử nội dung không phải là một phần của RSS2.0 nhưng là của Atom (rss 4287).

đọc thông số kỹ thuật RSS2.0 http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt đọc Atom số kỹ thuật http://tools.ietf.org/html/rfc4287

+0

Tôi chỉ muốn hỗ trợ các định dạng phổ biến, như mọi ứng dụng đọc nguồn cấp dữ liệu có sẵn ... Ứng dụng trình đọc nguồn cấp dữ liệu có thể đọc mọi thứ, với bất kỳ loại thẻ nội dung nào ... –

4

Từ thảo luận của chúng tôi trong các ý kiến, tôi có thể đề nghị đi với một nhà cung cấp bên thứ 3 thay vì xây dựng nó từ đầu - ArgoticRSS.NET cả hai đều có triển vọng.

+0

RSS.NET đang ngừng hoạt động. –

Các vấn đề liên quan