MSXML2.DOMDocument加载Internet资源时情况枚举

2024-03-21 07:32

本文主要是介绍MSXML2.DOMDocument加载Internet资源时情况枚举,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MSXML2.DOMDocument加载Internet资源时情况枚举

Article last modified on 2002-1-21


The information in this article applies to:

  • Microsoft XML, versions 2.52.6 3.0

SYMPTOMS

如果你调用MSXML.DOMDocument或者MSXML.DOMDocumentLoad方法来加载一个XML文件资源,而访问这个XML文件是Internet上的资源,那么具体会有几种情况出现,开发人员应该熟悉不同的设置下会出现什么状况。

其中有这么四种情况比较特殊,程序员一定要小心。

测试的代码如下:

<%Response.Buffer = False%>

<%

    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 & "
"

    ' 打出DOMDocument加载资源的URL:

    Response.Write oxml.url & "
"

   

    '如果DOMDocument.load方法返回值为FALSE,则打出它的错误原因:

    If ReturnValue = False Then

       Response.Write "--****************--" & "
"

      

       Set oXMLError = oXML.ParseError

       Response.Write "" & _

          oXMLError.ErrorCode & _

          " - " & oXMLError.Reason & _

          "
"

       Set oXMLError = Nothing

      

       Response.Write "--****************--" & "
"

    End If

    ' 打出加载的XML文档的节点个数

    For x = 0 to oxml.childNodes.length

       Response.Write "Node " & x & "." & "
"

    Next

   

    ' 打出加载的XML文档内容:

Response.Write "<-- XML Content: -->" & "
" & oxml.xml & "
" & " --------"
 

    Set oXML = Nothing

%>

第一种情况(小心,一个幌子!):

默认情况下,DOMDocument对象的async属性是TRUE,即异步方式加载。

而且加载时不使用ServerXMLHTTP组件。

即注释掉上面代码中的第A行和B行代码。

A   ‘ oXML.async = false

B   ‘ oxml.setProperty "ServerHTTPRequest", true

这时候,加载会成功。

ReturnValue将会是TRUE

但是加载到DOMDocument中的XML文档为空!也就是说,load方法返回的TRUE是一个幌子!

结果如下所示:

对于这种情况,程序员一定要小心!

XML虽然没有报告任何错误,而且load方法也表明成功,但是DOMxml属性却为空。

第二种情况(小心,一个严重的错误):

如果你显式地声明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组件。

即启用上面代码中的第AB行代码。

A      oXML.async = false

B      oxml.setProperty "ServerHTTPRequest", true

那就可以了!说明使用SXH组件加载XML文档,能够纠正了异步方式加载Internet资源的错误。

谢天谢地,终于有一种情况能够加载Internet上的XML资源了。

总结一下:

加载方式

是否使用

ServerXMLHTTP组件

加载结果

异步加载

不使用

加载会成功。

但是加载到DOMDocument中的XML文档为空

同步加载

不使用

将会遭遇失败!错误原因为:

-2146697209 - 无所需资源的可用数据。

异步加载

使用

不被允许的

同步加载

使用

真正成功



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12653


这篇关于MSXML2.DOMDocument加载Internet资源时情况枚举的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832087

相关文章

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙