2012-04-07 12 views
8

Ich mag die Ausgabe eines RSS-Feeds in einem formatierten HTML in einer TWebBrowser Komponente, wenn eine Last dieses Feed http://code.google.com/feeds/p/v8/svnchanges/basic in einem TWebBrowser, dies zeigt den Inhalt als XML-DateiWie kann ich die Ausgabe eines RSS-Feeds im HTML-Format in einem TWebBrowser anzeigen?

enter image description here

zeigen, aber wenn ich benutze IE die gleiche Seite zu laden

enter image description here

ich habe versucht, eine CSS auf das geladene IHTMLDocument2 Injektion, wie in dieser Frage CSS and TWebbrowser delphi vorgeschlagen, aber ich immer noch das gleiche Ergebnis zu erzielen.

Die Frage ist, wie kann ich den RSS-Feed in TWebbrowser laden, aber die Ausgabe als HTML-Dokument wie IE zeigt?

Antwort

5

Nur eine Vermutung, aber Sie könnten versuchen, das folgende XSL-Stylesheet (aus http://snippets.dzone.com/posts/show/1162 und modifiziert, wie unten durch cherdt in den Kommentaren vorgeschlagen) Anwendung:

<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> 

Zum Feed Sie empfangen. Informationen zum Umwandeln des Dokuments finden Sie unter this question's selected answer. Anschließend können Sie versuchen, das resultierende XML dem WebBrowser zuzuordnen.

Ich vermute, dass Sie Ihr WebBrowser-Steuerelement zum Futter weisen, aber mit diesem Ansatz würden Sie den Feed zum Beispiel unter Verwendung herunterladen müssen, Indy (check out TIdHTTP und seine Get()-Methode), transformiert, und dann Anzeige in Ihrer Kontrolle.

Bitte beachten Sie, dass das obige ist nur eine Vermutung, aber ich glaube, es ist eine gute Annahme. :)

2

IE wendet ein Standard-Stylesheet und eine XSL-Transformation auf den RSS-Feed-XML an. Dies ist ein IE-Ding, eher als ein Standard oder ähnliches.

Sie müssten etwas Ähnliches selbst tun, indem Sie die Seite ändern, bevor sie angezeigt wird.