2012-04-07 18 views
8

I Want để hiển thị các sản phẩm của một feed rss trong HTML được định dạng trong một thành phần TWebBrowser, nếu một tải thức ăn này http://code.google.com/feeds/p/v8/svnchanges/basic trong một TWebbrowser, điều này cho thấy nội dung dưới dạng tập tin XMLLàm cách nào tôi có thể hiển thị đầu ra của nguồn cấp dữ liệu rss ở định dạng HTML trong TWebBrowser?

enter image description here

nhưng nếu tôi sử dụng IE để tải cùng một trang

enter image description here

tôi đã cố gắng tiêm một css cho IHTMLDocument2 nạp như được diễn tả bằng câu hỏi này CSS and TWebbrowser delphi nhưng tôi vẫn nhận được kết quả tương tự.

Câu hỏi đặt ra là, làm cách nào tôi có thể tải nguồn cấp dữ liệu rss trong TWebbrowser nhưng hiển thị đầu ra dưới dạng tài liệu HTML như IE không?

Trả lời

5

Chỉ cần một đoán, nhưng bạn có thể thử áp dụng XSL stylesheet sau (lấy từ http://snippets.dzone.com/posts/show/1162 và sửa đổi theo đề nghị của cherdt trong các ý kiến ​​dưới đây):

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

Để thức ăn bạn nhận được. Để chuyển đổi tài liệu, hãy tham khảo this question's selected answer và sau đó bạn có thể thử gán XML kết quả cho trình duyệt WebBrowser.

Tôi đoán bạn đang trỏ điều khiển WebBrowser của bạn đến nguồn cấp dữ liệu, nhưng sử dụng phương pháp này, bạn cần tải xuống nguồn cấp dữ liệu bằng cách sử dụng, ví dụ: Indy (xem TIdHTTP và phương pháp Get()) hiển thị trong tầm kiểm soát của bạn.

Xin lưu ý rằng ở trên chỉ là phỏng đoán, nhưng tôi tin rằng đó là một giả định tốt. :)

2

IE đang áp dụng biểu định kiểu mặc định và phép biến đổi XSL thành XML nguồn cấp dữ liệu RSS. Đây là một điều IE thay vì một tiêu chuẩn hoặc bất cứ điều gì như thế.

Bạn sẽ cần tự làm một việc tương tự bằng cách sửa đổi trang trước khi trang được hiển thị.

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