我正在启用 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?有没有办法打开详细的错误报告?
假设您的 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