jueves, 10 de enero de 2013

WCF: Utilidad para convertir feeds en HTML estático

En el artículo de hoy veremos un ejemplo en el que usaremos WCF para leer el contenido de un RSS feed y generar código HTML estático que podremos incrustar posteriormente en nuestra web o blog.

Ya existen herramientas como feed burner que permiten generar código a partir de un feed para incrustar en una página HTML, el caso es que el código resultante es un script (javascript) que se incrusta en la página resultante y genera el contenido HTML del feed en runtime al cargar la página en el navegador.

Vamos con el ejemplo, usaremos Visual Studio 2010 Express en mi caso he usado un proyecto tipo web pero nos valdría también un proyecto Windows Forms o incluso una aplicación de consola.

El proyecto constará de una página con un TextBox que permita introducir la URL del feed, un botón "Generar" y un TextArea donde mostraremos el HTML resultante para poder "copiar y pegar" en nuestra web o blog.



En el botón on_click() del botón "Generar" picaremos el siguiente código que es el encargado de conectar al feed y completar el TextArea con el contenido del feed.
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Net;
  using System.IO;
  using System.ServiceModel.Syndication;
  using System.Xml;
  using System.Web;

  namespace FeedToHTML
  {
    public partial class FeedToHTML : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {

      }

      protected void btnGenerar_Click(object sender, EventArgs e)
      {
        txtResult.Text = new GetHTMLFeed(txtFeedURL.Text,200);
      }
   
    private string GetHTMLFeed(string pURLFeed, int pMaxContenidoResumen) 
    {
      try
      {
        string res = "";

        #region Obtener XMLFeed
         XmlReaderSettings settings = new XmlReaderSettings();
         settings.DtdProcessing = DtdProcessing.Parse;
         XmlReader xmlReader = XmlReader.Create(pURLFeed, settings);

         SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
         foreach (SyndicationItem item in feed.Items)
         {
           //char[] caracteres = item.Summary.Text.Substring(0, pMaxContenidoResumen).ToCharArray();
           res += string.Format("\r
{2} ...

\r", item.Title.Text, item.Links.LastOrDefault().Uri.ToString(), item.Summary.Text.Substring(0, pMaxContenidoResumen).Replace("\n", "")); } #endregion return res; } catch (Exception ex) { throw ex; } } } }

Hasta aquí el artículo de esta semana, recordaros que podéis consulta el archivo de areaTIC en busca de artículos que podrían interesarte y no olvides seguirnos en las redes sociales!


No hay comentarios:

Publicar un comentario