You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

经典ASP读取外部XML报‘object required: USD’错误求助

解决DOMDocument加载外部XML报“object required”问题

问题重现

本地读取XML文件的代码可正常运行:

Source = "kur.xml"

Set kurlar = Server.CreateObject("msxml2.DOMDocument.6.0" )
kurlar.async = false
kurlar.resolveExternals = false
kurlar.setProperty "ServerHTTPRequest" ,true

kurlar.load(Source)

Set USD = kurlar.selectSingleNode("//Tarih_Date/Currency[@Kod = 'USD']")
USDS = USD.selectSingleNode("BanknoteSelling").text

Set EUR = kurlar.selectSingleNode("//Tarih_Date/Currency[@Kod = 'EUR']")
EURS = EUR.selectSingleNode("BanknoteSelling").text

但将数据源替换为外部URL https://www.tcmb.gov.tr/kurlar/today.xml 时,出现“object required: 'USD'”错误——本质是kurlar.load()加载外部URL失败,导致后续节点查询返回空对象。

问题原因

虽然给DOMDocument设置了ServerHTTPRequest属性,但直接用load()加载外部HTTPS资源时,可能受服务器响应头、跨域限制或MSXML组件默认行为影响,导致XML加载失败,后续节点查询自然无法获取有效对象。

可行解决方案:用ServerXMLHTTP先获取XML内容

把“直接加载外部URL”拆成“HTTP请求获取内容 + 加载本地文本”两步,绕开DOMDocument直接加载外部资源的限制:

Source = "https://www.tcmb.gov.tr/kurlar/today.xml"

' 先用ServerXMLHTTP获取XML内容
Set xmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
xmlHttp.Open "GET", Source, False
xmlHttp.Send
xmlContent = xmlHttp.ResponseText

' 再加载到DOMDocument
Set kurlar = Server.CreateObject("msxml2.DOMDocument.6.0" )
kurlar.async = false
kurlar.resolveExternals = false
kurlar.loadXML(xmlContent)

' 后续节点查询逻辑不变
Set USD = kurlar.selectSingleNode("//Tarih_Date/Currency[@Kod = 'USD']")
USDS = USD.selectSingleNode("BanknoteSelling").text

Set EUR = kurlar.selectSingleNode("//Tarih_Date/Currency[@Kod = 'EUR']")
EURS = EUR.selectSingleNode("BanknoteSelling").text

' 释放对象
Set xmlHttp = Nothing
Set kurlar = Nothing

补充说明

此前尝试过相关方案无效,最终通过ServerXMLHTTP的方式解决问题,核心是通过独立的HTTP请求组件获取外部资源,再交给DOMDocument处理,避免了直接加载外部URL的兼容性问题。

内容的提问来源于stack exchange,提问作者zokanzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:32:36