-1

当我从记录集中获取 XML url 时,出现此错误

无效的过程调用或参数:“xmlDOM.load”

Set xmlDOM = CreateObject("MSXML2.DOMDocument")
xmlDOM.async = False
xmlDOM.setProperty "ServerHTTPRequest", True

sql="select top 1 * from rss where id=12"
rs.open sql,objcon
if not rs.eof then
    response.write rs("url") 'This returns http://npps.ir/rss.aspx?c=25
    xmlDOM.Load(rs("url"))
end if
rs.close

但是当我对该 url 进行硬编码时没有错误(但是它返回 false,因为目标 url 不是有效的 XML):

xmlDOM.Load("http://npps.ir/rss.aspx?c=25")

正如我在MSXML2文档中所读到的,Load 方法将在成功或失败的情况下返回 true 或 false。那么为什么我会收到那个错误,为什么我在硬编码 url 时没有错误呢?

更新:

当我使用xmlDOM.Load(cstr(rs("url")))我没有错误。记录集值不是字符串本身吗?

4

1 回答 1

2

那么为什么我会收到那个错误,为什么我在硬编码 url 时没有错误呢?...记录集值不是字符串本身吗?

根据您的数据库提供程序,rs("url")可以返回一个Field对象,该对象具有附加属性,如NameTypeValueAttributes等。尝试依赖默认属性和默认集合可能会导致此类错误。使用 OLE DB 和 ADO ODBC 提供程序时最好是明确的。例如,result = xmlDOM.Load(CStr(rs.Fields.Item("url").Value))检索 url 项的 Field 对象,获取其 Value 属性,然后将 Value 转换为 String 子类型的 Variant 以供xmlDOM.Load()调用,并捕获结果以供后续验证。

xmlDOM.resolveExternals = False顺便说一句,如果您对验证 XML 不感兴趣,请尝试xmlDOM.validateOnParse = False在调用xmlDOM.Load(). 最后,如果您的环境使用代理服务器,请确保从有效的用户上下文运行您的脚本以进行正确的代理身份验证。否则,请查看 的setProxysetProxyCredentials方法MSXML2.ServerXMLHTTP。值得一提。

希望这些信息有所帮助。

于 2020-03-16T12:45:37.937 回答