XML 和 ASP:检索并解析远程文件

Nat*_*Mac 5 xml asp-classic

我正在启用 ASP 的 Windows Server 上构建一个网站。我需要从另一台服务器检索 XML 文档并返回该文档中的值。xml 文件很小 - 只有一个带有文本值的节点。我只需要返回该文本值。我以前从未使用过 ASP,谷歌搜索让我找到了一些代码示例,但到目前为止还没有任何效果。这是我得到的,给我500分:

<%
Dim URL, objXML
URL = "http://someserver.com/xml"
Set objXML = Server.CreateObject("MSXML2.DOMDocument.4.0")
objXML.setProperty "ServerHTTPRequest", True
objXML.async =  False
objXML.Load(URL)

If objXML.parseError.errorCode <> 0  Then
    Response.Write(objXML.parseError.reason)
    Response.Write(objXML.parseError.errorCode)
End If

Set oRoot = objXML.selectSingleNode("//xml/response")
var = oRoot.text

set objXML = nothing
%>

<%= var %>
Run Code Online (Sandbox Code Playgroud)

===========

更新:

是的,您对我的 XML 的看法完全正确。只有一个具有值的节点。根据您的评论,我将我的 asp 代码编辑为:

<%

Dim URL, objXML, value
URL = "http://someserver.com/xml"
Set objXML = Server.CreateObject("MSXML2.DOMDocument.6.0")
objXML.setProperty "ServerHTTPRequest", True
objXML.async =  False
objXML.Load URL

Response.Write objXML.parseError.reason

value = objXML.documentElement.Text

set objXML = nothing

%>

<%= value %>
Run Code Online (Sandbox Code Playgroud)

仍然返回 500。我该如何调试 ASP?有没有办法打开详细的错误报告?

Ant*_*nes 2

假设您的 Xml 实际上是:-

<?xml version="1.0" ?>
<response>The value</response>
Run Code Online (Sandbox Code Playgroud)

尝试使用:-

Dim value
value = objXML.documentElement.Text
Run Code Online (Sandbox Code Playgroud)

顺便提一句,

当您调用不返回值的方法时,您不需要括号:-

objXML.Load Url

Response.Write objXML.parseError.reason
Run Code Online (Sandbox Code Playgroud)

另外,如果这是您的服务器,请安装 MSXML6 并使用 MSXML2.DOMDocument.6.0。如果这不是您的服务器,请使用 MSXML3.DOMDocument.3.0

  • @Pete:这不仅仅是风格。在原始代码中使用 () 不会导致语法错误的唯一原因是只传递了一个参数。使用 ( ) 传递 2 个或多个而不检索结果将会失败。因此,通过完全避免以这种方式使用 () 将使 VBScript 代码更加一致。此外,使用 ByRef 参数的代码会以 () 中断,因为它将参数转换为表达式。最后,我更喜欢让 VB 代码 __Look__ 像 VB 代码,而不是尝试使其与其他语言风格相似,这有助于突出错误。 (2认同)