2012-04-07 23 views
8

Quiero mostrar la salida de un canal RSS en un formato HTML en un componente TWebBrowser, si una carga de este feed http://code.google.com/feeds/p/v8/svnchanges/basic en un TWebBrowser, esto muestra el contenido como un archivo XML¿Cómo puedo visualizar el resultado de un feed rss en formato HTML en un TWebBrowser?

enter image description here

pero si yo uso IE para cargar la misma página

enter image description here

probé la inyección de un css a la IHTMLDocument2 cargado como se sugiere en esta pregunta CSS and TWebbrowser delphi pero todavía conseguir el mismo resultado.

La pregunta es, ¿cómo puedo cargar el RSS feed en TWebbrowser pero mostrando el resultado como un documento HTML como IE?

Respuesta

5

Sólo una conjetura, pero es posible que trate de aplicar la siguiente hoja de estilo XSL (tomado de http://snippets.dzone.com/posts/show/1162 y modificado según lo sugerido por cherdt en los comentarios):

<xsl:stylesheet version="1.0" 
    xmlns:atom="http://www.w3.org/2005/Atom" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <xsl:output method="html"/> 
    <xsl:template match="/"> 
    <xsl:apply-templates select="/atom:feed/atom:head"/> 
     <xsl:apply-templates select="/atom:feed"/> 
    </xsl:template> 
    <xsl:template match="atom:feed/atom:head"> 
     <h3><xsl:value-of select="atom:title"/></h3> 
     <xsl:if test="atom:tagline"><p><xsl:value-of select="atom:tagline"/></p></xsl:if> 
     <xsl:if test="atom:subtitle"><p><xsl:value-of select="atom:subtitle"/></p></xsl:if> 
    </xsl:template> 
    <xsl:template match="/atom:feed"> 
     <h3><xsl:value-of select="atom:title"/></h3> 
     <xsl:if test="atom:tagline"><p><xsl:value-of select="atom:tagline"/></p></xsl:if> 
     <xsl:if test="atom:subtitle"><p><xsl:value-of select="atom:subtitle"/></p></xsl:if> 
     <ul> 
      <xsl:apply-templates select="atom:entry"/> 
     </ul> 
    </xsl:template> 
    <xsl:template match="atom:entry"> 
     <li> 
      <a href="{atom:link[@rel='related']/@href}" title="{substring(atom:published, 0, 11)}"><xsl:value-of select="atom:title"/></a> 
      <xsl:choose> 
       <xsl:when test="atom:content != ''"> 
        <p><xsl:value-of select="atom:content" disable-output-escaping="yes" /></p> 
       </xsl:when> 
       <xsl:otherwise> 
        <p><xsl:value-of select="atom:summary" disable-output-escaping="yes" /></p> 
       </xsl:otherwise> 
      </xsl:choose> 
     </li> 
    </xsl:template> 
</xsl:stylesheet> 

Para la alimentación que está recibiendo. Para transformar el documento, consulte this question's selected answer y luego podría intentar asignar el XML resultante al WebBrowser.

Supongo que usted está señalando el control WebBrowser para la alimentación, pero el uso de este enfoque que se necesita para descargar el feed utilizando, por ejemplo, Indy (echa un vistazo a TIdHTTP y su método Get()), transformarla, y luego muestra en tu control.

Tenga en cuenta que lo anterior es solo una suposición, pero creo que es una buena suposición. :)

2

IE está aplicando una hoja de estilo predeterminada y una transformación XSL a la fuente RSS XML. Esto es algo de IE en lugar de un estándar o algo así.

Debería hacer algo similar usted mismo modificando la página antes de que se muestre.

Cuestiones relacionadas