2012-06-13 24 views
5

Estoy tratando de hacer un lector de RSS simple usando la clase SyndicationFeed.Creando un lector de RSS simple, recuperando contenido

Hay algunas etiquetas estándar, como <title>, <link>, <description> ... no hay ningún problema con ellas.

Pero hay algunas otras etiquetas. por ejemplo, en this feed, creado por WordPress, existe la etiqueta <content:encoded>. Creo que puede haber otras etiquetas para la parte de contenido de otros sitios web. ¿derecho?

Quiero saber, cómo encontrar el contenido principal de cada publicación, ¿hay alguna norma? ¿Qué etiquetas debo buscar?

(por ejemplo, un sitio puede utilizar <content:encoded> sino algún otro sólo tiene que utilizar <description> o alguien que use otro estándar ... No sé qué hacer para recuperar el principal contenido de un post)

PD: Estoy usando este código para probar mi lector RSS simple:

 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

Depende de lo que quiere apoyar. El elemento de contenido no es parte de RSS2.0 pero es de Atom (rss 4287). Lea las especificaciones de RSS2.0 http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt –

+0

La última vez que intenté escribir un lector de RSS, finalmente me rendí después de darme cuenta de que había un número significativo de fuentes no sigas ninguna norma Los lectores más importantes deben ser muy indulgentes en lo que respecta a la lectura de feeds. Veo que se parece a los navegadores que leen páginas web: si la gente sigue los estándares, no hay problema, pero si no, escribirás material personalizado todo el día para manejar los escenarios únicos. –

+0

@JoeEnos ¿Qué hacen otras aplicaciones de lector de alimentación? Ellos pueden leer cada alimento. ¿Cómo hacen eso? –

Respuesta

1

he encontrado Argotic framework de sindicación (gracias a JoeEnos).

Argotic tiene muchas extensiones, que se pueden usar para manejar elementos que no son estándar.

Por ejemplo, puede usar Argotic.Extensions.Core.SiteSummaryContentSyndicationExtension para recuperar <content:encoded>. Puede ver un ejemplo here. (Si ese ejemplo se devuelve null para el contenido, simplemente debe usar MyRssItem.Description)

Algunas otras extensiones útiles son WellFormedWebCommentsSyndicationExtension (para recuperar los comentarios URL del feed) y SiteSummarySlashSyndicationExtension (para recuperar comentarios cuenta).

0

Depende de lo que quiere apoyar. El elemento de contenido no es parte de RSS2.0 pero es de Atom (rss 4287).

lee especificaciones RSS2.0 http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt especificaciones Leer Atom http://tools.ietf.org/html/rfc4287

+0

Solo quiero admitir formatos populares, como cualquier aplicación de lector de fuentes disponible ... Las aplicaciones de lector de canales de alimentación pueden leer todo, con cualquier tipo de etiqueta de contenido ... –

4

De nuestra discusión en los comentarios, probablemente sugiero ir con un proveedor de terceros en lugar de compilarlo desde cero: Argotic y RSS.NET parecen prometedores.

+0

RSS.NET está fuera de servicio. –

Cuestiones relacionadas