MSXML2.DOMDocument加载Internet资源
MSXML2.DOMDocument加载Internet资源
The information in this article applies to:
- Microsoft XML, versions 2.5,2.6, 3.0
SYMPTOMS
如果你调用MSXML.DOMDocument或者MSXML.DOMDocument的Load方法来加载一个XML文件资源,而访问这个XML文件是Internet上的资源,那么具体会有几种情况出现,开发人员应该熟悉不同的设置下会出现什么状况。
其中有这么四种情况比较特殊,程序员一定要小心。
测试的代码如下:
<%Response.Buffer = False%>
<html>
<head>
</head>
<body>
<%
Dim oXML, oXMLError, ReturnValue, x
Set oXML = Server.CreateObject("MSXML2.DOMDocument")
' 设置DOMDocument加载资源时是异步加载,还是同步加载:
A oXML.async = false
' 设置目的:
' True/False value indicating if the "server-safe" ServerXMLHTTP
' component should be used to load a document to a server
B oxml.setProperty "ServerHTTPRequest", true
' 通过HTTP加载资源:
C ReturnValue = oXML.Load("http://localhost/asp/ServerXML.xml")
' 或者加载文件资源:
D 'ReturnValue = oXML.Load("C:/Inetpub/testASP/ServerXML.xml")
' 打出DOMDocument.load的返回值:
Response.write "Result of load method is =" & ReturnValue & "<br>"
' 打出DOMDocument加载资源的URL:
Response.Write oxml.url & "<br>"
'如果DOMDocument.load方法返回值为FALSE,则打出它的错误原因:
If ReturnValue = False Then
Response.Write "--****************--" & "<br>"
Set oXMLError = oXML.ParseError
Response.Write "" & _
oXMLError.ErrorCode & _
" - " & oXMLError.Reason & _
"<br>"
Set oXMLError = Nothing
Response.Write "--****************--" & "<br>"
End If
' 打出加载的XML文档的节点个数
For x = 0 to oxml.childNodes.length
Response.Write "Node " & x & "." & "<br>"
Next
' 打出加载的XML文档内容:
Response.Write "<-- XML Content: -->" & "<br>" & oxml.xml & "<br>" & " --------"
Set oXML = Nothing
%>
</body>
</html>
第一种情况(小心,一个幌子!):
默认情况下,DOMDocument对象的async属性是TRUE,即异步方式加载。
而且加载时不使用ServerXMLHTTP组件。
即注释掉上面代码中的第A行和B行代码。
A ‘ oXML.async = false
B ‘ oxml.setProperty "ServerHTTPRequest", true
这时候,加载会成功。
ReturnValue将会是TRUE。
但是加载到DOMDocument中的XML文档为空!也就是说,load方法返回的TRUE是一个幌子!
结果如下所示:
对于这种情况,程序员一定要小心!
XML虽然没有报告任何错误,而且load方法也表明成功,但是DOM的xml属性却为空。
第二种情况(小心,一个严重的错误):
如果你显式地声明async属性为FALSE,即同步方式加载XML文档。
而且加载时不使用ServerXMLHTTP组件。
即只注释掉上面代码中的第B行代码。
A oXML.async = false
B ‘ oxml.setProperty "ServerHTTPRequest", true
那么将会遭遇失败!ReturnValue将是False。
错误原因为:
-2146697209 - 无所需资源的可用数据。
也就说,同步加载Internet上的XML资源是不会成功的!!
第三种情况(不允许的情况!):
如果你的async属性为TRUE,即异步方式加载XML文档。
而且加载时使用ServerXMLHTTP组件。
即启用上面代码中的第B行代码。注释掉第A行代码。
A ‘oXML.async = false
B oxml.setProperty "ServerHTTPRequest", true
报告了错误!说明使用SXH组件异步加载XML文档,是不被允许的!
错误描述为:
-1072897486 - The ServerHTTPRequest property can not be used when loading a document asynchronously and is only supported on Windows NT 4.0 and above.
第四种情况(真正OK的情况!):
如果你显式地声明async属性为FALSE,即同步方式加载XML文档。
而且加载时使用ServerXMLHTTP组件。
即启用上面代码中的第A和B行代码。
A oXML.async = false
B oxml.setProperty "ServerHTTPRequest", true
那就可以了!说明使用SXH组件加载XML文档,能够纠正了异步方式加载Internet资源的错误。
谢天谢地,终于有一种情况能够加载Internet上的XML资源了。
总结一下:
|
加载方式 |
是否使用 ServerXMLHTTP组件 |
加载结果 |
|
异步加载 |
不使用 |
加载会成功。 但是加载到DOMDocument中的XML文档为空 |
|
同步加载 |
不使用 |
将会遭遇失败!错误原因为: -2146697209 - 无所需资源的可用数据。 |
|
异步加载 |
使用 |
不被允许的 |
|
同步加载 |
使用 |
真正成功 |
参考原文链接:https://blog.csdn.net/tanminr/article/details/1534560
MSXML2.DOMDocument加载Internet资源的更多相关文章
- 填补Resources和WWW加载本地资源的坑
总的来说Resources和WWW加载本地资源坑比较多,大多与路径有关. 下面代码构成了一个路径的预读模块: 此模块主要解决的坑是:Resources或WWW加载本地的文件夹中的多个文件时,无法获取文 ...
- Error #2044: 未处理的 IOErrorEvent:。 text=Error #2035: 找不到 URL这是flash加载外部资源时有时会遇到的问题,对于此问题解决如下
导致这个错误的主要原因是未添加IOErrorEvent事件监听,或者添加了监听,但是加载时使用了unload() 参考资料: http://blog.csdn.net/chjh0540237/arti ...
- schtasks在win7下提示错误:无法加载列资源
转自: http://blog.chinaunix.net/uid-24946452-id-2887851.html 查看cmd 编码 chcp 如使用 936中文GBK编码的话 schtasks.e ...
- iOS webView 远程html加载本地资源
昨天,一个朋友让我帮他在IOS上弄这样一件事情: webView 调用远程URL,并且让远程的web 通过自定义标签能实现内嵌本地的图片.js 或音频等. 比如:在服务器端 的html文件中 这样写到 ...
- 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式
Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...
- [IOS]UIWebView 请求网络页面或者加载本地资源页面
UIWebView是一个能够显示网页的IOS视图控件,我们可以用它来访问一个网站.下面是具体的实例: 操作步骤: 1.首先在xib文件中拖放一个UIWebView控件到view中 2.将下载的页面以及 ...
- 使用three.js加载3dmax资源,以及实现场景中的阴影效果
使用three.js可以方便的让我们在网页中做出各种不同的3D效果.如果希望2D绘图内容,建议使用canvas来进行.但很多小伙伴不清楚到底如何为我们绘制和导入的图形添加阴影效果,更是不清楚到底如何导 ...
- Django的urls.py加载静态资源图片,TypeError: view must be a callable or a list/tuple in the case of include().
Django的urls.py加载静态资源图片,TypeError: view must be a callable or a list/tuple in the case of include(). ...
- iOS WebView 加载本地资源(图片,文件等)
https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...
随机推荐
- SSIS连接Excel2007版本之后的数据源
今天我发现了新大陆,兴奋得不得了,由于原文写得太过详细与专业,我就偷偷懒直接Copy过来了,怕自己以后没地儿找,哈哈哈 原文链接:https://www.cnblogs.com/biwork/p/34 ...
- Ros环境创建相关!超级简单!!超级详细!!
1.创建工作空间workspace 其中catkin_ws后面的ws是work_space的简写,指代工作空间 <catkin_ws是你的工作空间的名字,随便取> mkdir -p ~/c ...
- 树莓派开机自启动热点(使用有线eth0上网,使用wlan0进行热点)
一.背景内容 其实就是接了一单,有人需要我帮忙配置一下树莓派开机启动热点.这边做个记录,该方式树莓派4B.3B都可以使用. 二.实际操作 1.使用网线连接路由器和树莓派 树莓派的网络接口一共有三个,分 ...
- 8、tnsnames文件配置
监听的配置文件 2.tnsnames.ora文件 tnsnames.ora文件:客户端的 配置tnsnames.ora监听文件 1.使用netca命令 指定图像映射机器 [oracle@db11g a ...
- 19、解析2_1(链、chunk、锁)
解析 shared pool 图解: library cache里面,暂时可以认为存储着: 1.SQL以及对应的执行计划(所占空间比较小): 2.存储过程.函数.触发器.包,它们编译后的对象(所占空间 ...
- canvas 隐写术
http://www.alloyteam.com/2016/03/image-steganography/#prettyPhoto https://www.cnblogs.com/Miracle-ZL ...
- NetBox使用教程1-组织架构
前言 本教程用于学习NetBox的基础使用,练习可使用官方Demo:https://demo.netbox.dev/ NetBox 使用教程系列:https://songxwn.com/tags/ne ...
- x-easypdf 初始
一.概述 一个 java 语言简化处理 pdf 的框架 项目主页 https://x-easypdf.cn 项目概述 x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfb ...
- API之接口服务
聚合数据: https://www.juhe.cn/ 百度api市场: https://apis.baidu.com/
- JPEG格式研究——(3)霍夫曼解码
因为霍夫曼编码以bit为单位,长度又不确定,读取时无法区分,JPEG采用了范式霍夫曼编码. 读取并生成霍夫曼表 JPEG中DC系数和AC系数是分别进行编码将霍夫曼表保存在DQT中. 直接上代码解释可能 ...