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

相关文章

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超