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

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

本文简介:选择自 x86 的 blog

 

你通过ixmldomnode界面实现的两个属性来访问节点的类型。nodetype属性列举了domnodetype所有项目(一些项目列举在上面的表格上)。另外,你可以用nodetypestring属性来获得表示节点类型的字符串。

一旦你有了文档的dom引用,你就可以遍历节点的层次。通过文档引用,你可以访问childnodes属性,它给出了一个自上而下的包含所有节点的目录。childnodes属性实现了ixmldomnodelist,它支持visual basic的for/each结构,所以你可以列举出childnodes中的所有节点。另外,childnodes属性还实现了level属性,它可以返回所有子节点的数目。

不只是文档对象有childnodes属性,每一个节点都有childnodes属性。因为如此,childnodes属性和ixmldomnode's haschildnodes属性配合,使你非常方便的遍历文档,访问元素,属性,值。

值得一提的是,元素和元素值之间是父子关系。例如在 cds xml文档中,元素<title>表示歌曲的名字,要知道<title>的值,你需要访问节点的属性node_text。如果你发现一个节点有你感兴趣的数据,你可以访问它的属性,也可以通过parentnode属性来访问它们的父节点。

如何遍历xml文档:

你能够遍历文档的节点是利用文档对象,因为xml本身就是层次结构,所以很容易编写递归代码来访问整个文档。

loaddocument程序打开xml文档,然后调用另一个程序displaynode,它用来显示文档的结构。loaddocument传递给正在打开的xml文档的childnodes属性一个引用作为它的参数,同时传递一个整数用来标示开始显示的层次级别。代码利用参数来格式化在visual basic文档结构显示窗口中的文本。

displaynode属性的函数会遍历文档寻找需要的node_text节点类型串,一旦代码找到一个node_text的节点,它会利用nodevalue属性来获得相应的文本串。另外,当前节点的parentnode属性指向一个元素类型的节点。元素节点实现了一个nodename属性,

 

nodename和nodevalue属性会被显示。

如果一个节点还有子节点,通过检测haschildnodes属性确认,displaynode就会调用自己知道遍历文档的全部。

 

下面这个displaynode程序用debug.print向visual basic窗口写入相关信息。

public sub loaddocument()

dim xdoc as msxml.domdocument

set xdoc = new msxml.domdocument

xdoc.validateonparse = false

if xdoc.load("c:\my documents\sample.xml") then

' the document loaded successfully.

' now do something intersting.

displaynode xdoc.childnodes, 0

else

' the document failed to load.

' see the previous listing for error information.

end if

end sub

public sub displaynode(byref nodes as msxml.ixmldomnodelist, _

byval indent as integer)

dim xnode as msxml.ixmldomnode

indent = indent + 2

 

for each xnode in nodes

if xnode.nodetype = node_text then

debug.print space$(indent) & xnode.parentnode.nodename & _

":" & xnode.nodevalue

end if

if xnode.haschildnodes then

displaynode xnode.childnodes, indent

end if

next xnode

end sub

displaynode用haschildnodes属性来确认是否再次调用自己,你也可以用节点的level属性,如果大于0,则有子节点。

下一步该干什么:

这仅仅是个开始,你现在可以更深的了解xml和microsoft 解析器(msxml.dll)。你可以作一些有趣的事例如改变某个节点的值,搜索文档,建立你自己的文档等等。访问 msdn online xml developer center以获得更多的例子,文章和下载。

本文关键:XML DOM
 

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

go top