如何加载文档?
要加载 XML 文档,首先必须创建 DOMDocument 类的实例:
- Dim xDoc As MSXML.DOMDocument
- Set xDoc = New MSXML.DOMDocument
当获得了有效的引用之后,使用加载方法打开文件。MSXML 分析程序能从本地磁盘上加载 XML 文档,在网上则用 UNC 引用或通过 URL 加载文档。若要从磁盘加载文档,请使用加载方法创建下面的构造:
广州网站建设,网站建设,广州网页设计,广州网站设计
- If xDoc.Load("C:\My Documents\cds.xml") Then
- ' 文档加载成功。
- ' 现在做一些有趣的事情。
- Else
- ' 文档加载不成功。
- End If
用完该文档之后,需要将您的对象引用释放给它。MSXML 分析程序并不显露明确的关闭方法。最好的方法是将引用明确设置为Nothing。
- Set xDoc = Nothing
当要求分析程序加载文件时,在默认情况下,它是非同步执行的。改变该文档的布尔 Async 属性可以改变这个特性。重要的是检查文档的 ReadyState 属性,保证文档在开始检查它的内容之前就已经就绪。ReadyState 属性可能返回的值为下列 5 种之一:
MSXML 分析程序显露了在加载大的文档时可以跟踪加载进程状态的事件。当在 Internet 上从 URL 非同步加载文档时,这些事件也有用。若要从 URL 打开文件,请使用完整格式的 URL 指定文件的位置。在文件位置前面必须加 http:// 前缀。这里是从 URL 加载文件的例子:
- xDoc.async = False
- If xDoc.Load("http://www.develop.com/hp/brianr/cds.xml") Then
- ' 文档加载成功。
- ' 现在做一些有趣的事情。
- Else
- ' 文档加载不成功。
- End If
将文档的 Async 属性设置为 False,分析程序在文档被完全加载并可以对其进行操作之前,不将控制返回到您的代码。如果将其设置为True,您必须在访问该文档之前先检查其 ReadyState 属性,或者利用 DOMDocument 的事件,在文档就绪时通知您的代码。
广州网站建设,网站建设,广州网页设计,广州网站设计
处理故障
由于各种各样的原因,文档加载很可能失败。其中最常见的原因可能是传送到加载方法的文档名无效。另一个原因可能是 XML 文档本身是无效的。
在默认情况下,MSXML 分析程序将验证在您的文档中是否指定了 DTD 或架构。如果在调用加载方法之前设置了 DOMDocument 对象引用的 ValidateOnParse 属性,就令分析程序不验证文档。
- Dim xDoc As MSXML.DOMDocument
- Set xDoc = New MSXML.DOMDocument
- xDoc.validateOnParse = False
- If xDoc.Load("C:\My Documents\cds.xml") Then
- ' 文档加载成功。
- ' 现在做一些有趣的事情。
- Else
- ' 文档加载不成功。
- End If
但要事先警告您:在制作应用程序时关闭分析程序的验证特性并不是好方法。不正确的文档因各种理由导致程序的失败。至少,它会向用户提供无效的数据。
不管何种故障的类型,都可以通过访问ParseError对象,要求分析程序向您提供故障信息。若要利用ParseError对象的属性,请将引用设置为文档自身的 IXMLDOMParseError 界面。IXMLDOMParseError界面显露了7种属性,可以用来研究错误的原因。下面的例子显示一个消息框,以及ParseError对象给出的所有错误信息。
- Dim xDoc As MSXML.DOMDocument
- Set xDoc = New MSXML.DOMDocument
- If xDoc.Load("C:\My Documents\cds.xml") Then
- ' 文档加载成功。
- ' 现在做一些有趣的事情。
- Else
- ' 文档加载不成功。
- Dim strErrText As String
- Dim xPE As MSXML.IXMLDOMParseError
- ' 获得 ParseError 对象
- Set xPE = xDoc.parseError
- With xPE
- strErrText = "Your XML Document failed to load" & _
- "due the following error." & vbCrLf & _
- "Error #: " & .errorCode & ": " & xPE.reason & _
- "Line #: " & .Line & vbCrLf & _
- "Line Position: " & .linepos & vbCrLf & _
- "Position In File: " & .filepos & vbCrLf & _
- "Source Text: " & .srcText & vbCrLf & _
- "Document URL: " & .url
- End With
- MsgBox strErrText, vbExclamation
- End If
- Set xPE = Nothing
可用 ParseError 对象显露的信息,将该信息显示给用户,将它记录到错误文件中,或者自己试着纠正错误。