gpt4 book ai didi

xml - 使用经典 ASP 读取 XML 中的嵌套节点

转载 作者:行者123 更新时间:2023-12-04 06:06:41 27 4
gpt4 key购买 nike

我的经典 ASP 代码连接到一个 URL 并显示 XML,我的代码如下所示

Response.ContentType = "text/xml"

myRSSfile = "http://abc.com"

Set getPage = Server.CreateObject("Microsoft.XMLHTTP" )

getPage.Open "GET", myRSSfile, false
getPage.SetRequestHeader "Content-type", "text/xml"
getPage.Send

Response.Write(getPage.responseText)
'response.write getPage.Status

Set getPage = Nothing

XML如下
<userContent xmlns="http://www.abc.com/userContent" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.com/abc.xsd">
<questions>
<question>
<item>
<sku>SCG20056-006</sku>
<title>Test me machine</title>
</item>
<text>
We are replacing a built in machine how it would be ?
</text>
<dateTime>2011-11-10T22:43:02Z</dateTime>
<answer>
<user>
<firstName>Raj</firstName>
<lastName>lastname</lastName>
</user>
<text>
We have been very happpy with the replacement
</text>
<dateTime>2011-11-21T21:00:24Z</dateTime>
</answer>
<answer>
<user>
<firstName>john</firstName>
<lastName>wright</lastName>
</user>
<text>
not so happy
</text>
<dateTime>2011-11-21T21:00:24Z</dateTime>
</answer>
</question>
</questions>
<comments/>
</userContent>

我需要做的是显示
1)“问题/问题/文本”标签
2) 显示这个标签的问题的所有答案
“问题/问题/答案/用户/名字”标签
&
3)“问题/问题/答案/文本”标签
是否可以在 Classic ASP 中进行?

最佳答案

对此采取的方法是使用 XSL 对接收到的 XML 执行转换以生成您想要显示的 HTML。这是一个让您入门的示例:

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

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:uc="http://www.abc.com/userContent" exclude-result-prefixes="uc">

<xsl:output method="html" />

<xsl:template match="/uc:userContent">
<div class="container">
<xsl:apply-templates select="uc:questions/uc:question" />
</div>
</xsl:template>

<xsl:template match="uc:question">
<b>Shopper asked:</b> <xsl:value-of select="uc:text" />
<ul>
<xsl:apply-templates select="uc:answer" />
</ul>
</xsl:template>

<xsl:template match="uc:answer">
<li>
<b>
<xsl:value-of select="uc:user/uc:firstName" />
<xsl:text> </xsl:text>
<xsl:value-of select="uc:user/uc:lastName" />:
</b>
<xsl:value-of select="uc:text" />
</li>
</xsl:template>

</xsl:stylesheet>

您可以将这个 xsl 放在一个名为“userContent.xsl”的文件中,例如在您网站的某个位置,为了方便起见,我们将把它放在根目录中。

现在我们需要整理你的代码:
<%
Option Explicit
Dim myRSSFile: myRSSfile = "http://abc.com"

Dim getPage: Set getPage = Server.CreateObject("MSXML2.XMLHTTPServer.3.0" )

getPage.Open "GET", myRSSfile, false
getPage.Send

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

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

%>
<html>
<head>
<title>Some Content</title>
</head>
<body>
<%
Response.Write dom.TransformNode(xsl)
%>
</body>
</html>

笔记:
  • 不要在 ASP 中使用 XMLHTTP,它不是为在服务器中使用而设计的。
  • 如果您不是 不需要在 xml http 请求中发送内容类型 header 发送 任何内容。
  • 当您想操作收到的 XML 时,请使用 responseXml属性为您提供了一个加载的 XML 文档,而不是 responseText . (当然不要使用 RegEx 来做到这一点)。
  • 始终包括 Option Explicit在您的脚本中,它将为您节省大量寻找错误的时间。
  • 关于xml - 使用经典 ASP 读取 XML 中的嵌套节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8268242/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com