XML DOM初学者指南(包括验证DTD)[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 x86 的 blog

msxml解析器实现了一些有用的方法,你在调入一个大的文档时可以用这些方法追踪调入过程的状态。这些方法对从internet上异步的调入文档也很有帮助。

要打开一个internet上的文档,你需要提供绝对url,并且必须加http://前缀。下面是一个例子。

xdoc.async = false

if xdoc.load("http://www.develop.com/hp/brianr/cds.xml") then

' 文档调入成功

' 作我们喜欢作的事

else

' 文档调入失败

end if

将async属性设置为false,这样在文档调入完成之前,解析器不会将控制权交给你的代码。如果把async保存为true,你在访问文档时必须检查readystate属性或者利用domdocument的事件在文档可以访问时提示你的代码。

处理错误:

你的文档可能因为各种原因而调入失败,最常见的原因是提供给解析器的文档名不正确,另一个常见的原因是xml文档不合法。

默认的解析器会验证你的文档是否符合某个dtd 或者 schema,你可以不让解析器执行验证,在执行load方法之前,将domdocument的属性validateonparse为false。

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对象来从解析器那儿获得有关错误类型的信息。创建一个ixmldomparseerror界面的引用,然后把它指向文档自身的parseerror对象。ixmldomparseerror界面实现了七种属性来使你获得错误原因。

下面的例子显示了一个信息框,列出了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 = "你的xml document 不能调入" & _

"原因是." & vbcrlf & _

"错误 #: " & .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对象来向你的用户报告错误信息,或者把它写入你个log中,你还可以尝试自己解决遇到的问题。

 

如何从xml文档中取得信息:

一旦你成功的调入了文档,下一步就是如何从中获得信息了。当你操作文档时,你经常会用到ixmldomnode界面,你利用它来读/写各个分离的节点元素。在使用它之前,你必须先理解msxml支持的13种节点元素类型,下面是最常用的几个。

 

dom节点类型

举例

node_element

<artist type="band">the offspring</artist>

node_attribute

type="band">the offspring

node_text

the offspring

node_processing_instruction

<?xml version="1.0"?>

node_document_type

<!doctype compactdiscs system "cds.dtd">

本文关键:XML DOM
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top