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资源的更多相关文章

  1. 填补Resources和WWW加载本地资源的坑

    总的来说Resources和WWW加载本地资源坑比较多,大多与路径有关. 下面代码构成了一个路径的预读模块: 此模块主要解决的坑是:Resources或WWW加载本地的文件夹中的多个文件时,无法获取文 ...

  2. Error #2044: 未处理的 IOErrorEvent:。 text=Error #2035: 找不到 URL这是flash加载外部资源时有时会遇到的问题,对于此问题解决如下

    导致这个错误的主要原因是未添加IOErrorEvent事件监听,或者添加了监听,但是加载时使用了unload() 参考资料: http://blog.csdn.net/chjh0540237/arti ...

  3. schtasks在win7下提示错误:无法加载列资源

    转自: http://blog.chinaunix.net/uid-24946452-id-2887851.html 查看cmd 编码 chcp 如使用 936中文GBK编码的话 schtasks.e ...

  4. iOS webView 远程html加载本地资源

    昨天,一个朋友让我帮他在IOS上弄这样一件事情: webView 调用远程URL,并且让远程的web 通过自定义标签能实现内嵌本地的图片.js 或音频等. 比如:在服务器端 的html文件中 这样写到 ...

  5. 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

    Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...

  6. Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条

    Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...

  7. [IOS]UIWebView 请求网络页面或者加载本地资源页面

    UIWebView是一个能够显示网页的IOS视图控件,我们可以用它来访问一个网站.下面是具体的实例: 操作步骤: 1.首先在xib文件中拖放一个UIWebView控件到view中 2.将下载的页面以及 ...

  8. 使用three.js加载3dmax资源,以及实现场景中的阴影效果

    使用three.js可以方便的让我们在网页中做出各种不同的3D效果.如果希望2D绘图内容,建议使用canvas来进行.但很多小伙伴不清楚到底如何为我们绘制和导入的图形添加阴影效果,更是不清楚到底如何导 ...

  9. 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(). ...

  10. iOS WebView 加载本地资源(图片,文件等)

    https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...

随机推荐

  1. 开源一款AI聊天工具

    学习Spring AI项目,开发一款问答工具 AI大模型请注册并生成API密钥 获取API密钥地址:https://bigmodel.cn/console/overview 开源地址:LuckyAI ...

  2. My SQL 下载和安装图文解说

    一.下载My SQL 官网下载地址:https://downloads.mysql.com/archives/installer/ 选择需要下载的版本,点击download.本文选择下载的版本是8.0 ...

  3. 干货分享:开启PWM调光之门,一起来做呼吸灯

    PWM作为一种灵活且高效的信号调制手段,在电气设备的性能控制和调节中发挥着重要作用,常用于电机控制.灯光调光.音频信号生成.加热控制等应用. 本文将以合宙低功耗4G模组经典型号--Air780E为例, ...

  4. P10681 COTS/CETS 2024 奇偶矩阵 Tablica

    P10681 COTS/CETS 2024 奇偶矩阵 Tablica 来自 qnqfff 大佬的梦幻 dp. 约定 二元组 \((n,m)\) 表示一个 \(n\) 行 \(m\) 列的矩形. 不添加 ...

  5. Windows下驱动安装

    推荐使用金山毒霸中的电脑医生进行驱动或DLL文件的扫描,查找并下载 dll文件下载地址:  https://www.wenjian.net/ 可以进行下载,告诉该文件的放置路径 其他:

  6. Git中使用tag

    什么是tag git仓库的tag是git版本库的一个标记,指向某个commit id标记的快照记录指针,所以,标签也是版本库的一个快照. tag主要用于发布版本的管理,一个当版本发布后,可以为git当 ...

  7. Python之pandas操作

    中文网:https://www.pypandas.cn/ Pandas 是 Python 的核心数据分析支持库,提供了快速.灵活.明确的数据结构,旨在简单.直观地处理关系型.标记型数据.Pandas ...

  8. Echarts 图例组件

    1.图例组件的基本介绍 图例组件legend展现了不同系列的标记(symbol),颜色和名字.可以通过点击图例控制哪些系列不显示. 2.开启图例组件 开启图例组件默认时关闭状态,通过配置legend字 ...

  9. Centos更改SSH端口的方法

    1,vi sshd vi /etc/ssh/sshd_config 2,添加PORT #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ...

  10. 埃尼阿克ENIAC与计算机发展,及信息技术发展史

    一.埃尼阿克ENIAC 第二次世界大战期间,国军方为了研发新型的大炮和导弹,设立了"弹道研究实验室".实验室为了计算炮弹弹道,用了200多人加班加点进行计算,速度依感无法达到军方要 ...