2011-11-10 53 views
2

我使用Get Clicky進行網頁分析,並且有一個用於生成自定義報告的API。在asp頁面中顯示XML

請求的輸出以XML CSV JSON或PHP的形式發回。

我的網站使用ASP,我想知道如果我要求輸出以XML的形式發回我的頁面,我該如何(我可以)顯示它。

這是來自Get Clicky API的響應示例。

<response status="ok"> 
<type type="visitors"> 
<date date="2011-11-10"> 
<item> 
<value>54</value> 
</item> 
</date> 
</type> 
<type type="actions"> 
<date date="2011-11-10"> 
<item> 
<value>102</value> 
</item> 
</date> 
</type> 
<type type="actions-average"> 
<date date="2011-11-10"> 
<item> 
<value>1.9</value> 
</item> 
</date> 
</type> 
<type type="time-average"> 
<date date="2011-11-10"> 
<item> 
<value>209</value> 
</item> 
</date> 
</type> 
<type type="bounce-rate"> 
<date date="2011-11-10"> 
<item> 
<value>39</value> 
</item> 
</date> 
</type> 
</response> 

回答

2

最好的方法是使用一些XSLT。

我首先假設您已經有一個MSXML DOM加載了您的問題中包含的XML。

這裏是採取這種和產生一些HTML輸出的代碼: -

Dim xsl : Set xsl = CreateObject("MSXML2.DOMDocument.3.0") 

xsl.async = false 
xsl.load Server.MapPath("/ClickyResponseRender.xsl") 

Response.Write yourLoadedDOM.TransformNode(xsl) 

下面是「ClickyResponseRender.xsl」文件,上述期望是在根文件夾的一些基本的內容。

<?xml version="1.0" encoding="utf-8"?> 

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="html" /> 

<xsl:template match="/response"> 
    <html> 
    <body> 
     <table> 
     <thead> 
      <tr> 
      <th>Type</th> 
      <th>Date</th> 
      <th>Value</th> 
      </tr> 
     </thead> 
     <tbody> 
      <xsl:apply-templates select="type" /> 
     </tbody> 
     </table> 
    </body> 
    </html> 
</xsl:template> 

    <xsl:template match="type"> 
    <tr> 
     <td> 
     <xsl:value-of select="@type"/> 
     </td> 
     <td> 
     <xsl:value-of select="date/@date"/> 
     </td> 
     <td align="right"> 
     <xsl:value-of select="date/item/value"/> 
     </td> 
    </tr> 
    </xsl:template> 

</xsl:stylesheet> 

這只是生成一個簡單的表格,列出每個類型的日期和值。但是我懷疑這個模式可能會稍微複雜一點(例如每個類型有多個日期),所以需要修改XSL來滿足需求。