0 Comments

XML DOM新手入门指南(2)

发布于:2013-12-10  |   作者:广州网站建设  |   已聚集:人围观

如何加载文档?

要加载 XML 文档,首先必须创建 DOMDocument 类的实例:


  1. Dim xDoc As MSXML.DOMDocument  
  2. Set xDoc = New MSXML.DOMDocument 

当获得了有效的引用之后,使用加载方法打开文件。MSXML 分析程序能从本地磁盘上加载 XML 文档,在网上则用 UNC 引用或通过 URL 加载文档。若要从磁盘加载文档,请使用加载方法创建下面的构造:
广州网站建设,网站建设,广州网页设计,广州网站设计


  1. If xDoc.Load("C:\My Documents\cds.xml") Then  
  2.  ' 文档加载成功。  
  3.  ' 现在做一些有趣的事情。  
  4. Else  
  5.  ' 文档加载不成功。  
  6. End If 

用完该文档之后,需要将您的对象引用释放给它。MSXML 分析程序并不显露明确的关闭方法。最好的方法是将引用明确设置为Nothing。


  1. Set xDoc = Nothing 

当要求分析程序加载文件时,在默认情况下,它是非同步执行的。改变该文档的布尔 Async 属性可以改变这个特性。重要的是检查文档的 ReadyState 属性,保证文档在开始检查它的内容之前就已经就绪。ReadyState 属性可能返回的值为下列 5 种之一:

MSXML 分析程序显露了在加载大的文档时可以跟踪加载进程状态的事件。当在 Internet 上从 URL 非同步加载文档时,这些事件也有用。若要从 URL 打开文件,请使用完整格式的 URL 指定文件的位置。在文件位置前面必须加 http:// 前缀。这里是从 URL 加载文件的例子:


  1. xDoc.async = False 
  2. If xDoc.Load("http://www.develop.com/hp/brianr/cds.xml") Then  
  3.  ' 文档加载成功。  
  4.  ' 现在做一些有趣的事情。  
  5. Else  
  6.  ' 文档加载不成功。  
  7. End If 

将文档的 Async 属性设置为 False,分析程序在文档被完全加载并可以对其进行操作之前,不将控制返回到您的代码。如果将其设置为True,您必须在访问该文档之前先检查其 ReadyState 属性,或者利用 DOMDocument 的事件,在文档就绪时通知您的代码。
广州网站建设,网站建设,广州网页设计,广州网站设计

处理故障

由于各种各样的原因,文档加载很可能失败。其中最常见的原因可能是传送到加载方法的文档名无效。另一个原因可能是 XML 文档本身是无效的。

在默认情况下,MSXML 分析程序将验证在您的文档中是否指定了 DTD 或架构。如果在调用加载方法之前设置了 DOMDocument 对象引用的 ValidateOnParse 属性,就令分析程序不验证文档。


  1.  Dim xDoc As MSXML.DOMDocument  
  2.  Set xDoc = New MSXML.DOMDocument  
  3. xDoc.validateOnParse = False 
  4. If xDoc.Load("C:\My Documents\cds.xml") Then  
  5.  ' 文档加载成功。  
  6.  ' 现在做一些有趣的事情。  
  7. Else  
  8.  ' 文档加载不成功。  
  9. End If 

但要事先警告您:在制作应用程序时关闭分析程序的验证特性并不是好方法。不正确的文档因各种理由导致程序的失败。至少,它会向用户提供无效的数据。

不管何种故障的类型,都可以通过访问ParseError对象,要求分析程序向您提供故障信息。若要利用ParseError对象的属性,请将引用设置为文档自身的 IXMLDOMParseError 界面。IXMLDOMParseError界面显露了7种属性,可以用来研究错误的原因。下面的例子显示一个消息框,以及ParseError对象给出的所有错误信息。


  1.  Dim xDoc As MSXML.DOMDocument  
  2.  Set xDoc = New MSXML.DOMDocument  
  3. If xDoc.Load("C:\My Documents\cds.xml") Then  
  4.  ' 文档加载成功。  
  5.  ' 现在做一些有趣的事情。  
  6. Else  
  7.  ' 文档加载不成功。  
  8.  Dim strErrText As String  
  9.  Dim xPE As MSXML.IXMLDOMParseError  
  10.    ' 获得 ParseError 对象  
  11.  Set xPE = xDoc.parseError  
  12.    With xPE  
  13.     strErrText = "Your XML Document failed to load" & _  
  14.         "due the following error." & vbCrLf & _  
  15.         "Error #: " & .errorCode & ": " & xPE.reason & _  
  16.         "Line #: " & .Line & vbCrLf & _  
  17.         "Line Position: " & .linepos & vbCrLf & _  
  18.         "Position In File: " & .filepos & vbCrLf & _  
  19.         "Source Text: " & .srcText & vbCrLf & _  
  20.         "Document URL: " & .url  
  21.     End With  
  22.       
  23.     MsgBox strErrText, vbExclamation  
  24. End If  
  25. Set xPE = Nothing 

可用 ParseError 对象显露的信息,将该信息显示给用户,将它记录到错误文件中,或者自己试着纠正错误。

标签:
飞机