在asp页面中显示XML

时间:2011-11-10 12:11:47

标签: asp-classic

我使用Get Clicky进行网站分析,并且有一个用于生成自定义报告的API。

请求的输出以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>

1 个答案:

答案 0 :(得分:2)

处理此问题的最佳方法是使用某些XSLT。

我首先假设您已经加载了包含在问题中的XML的MSXML DOM。

以下是获取该代码并生成一些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以满足需求。