|
xml dom初学者指南 | ||||||||||||||||||
|
作者:董胜涛 总述:本文主要讨论如何利用xmldom访问和维护xml文档,这个xmldom由microsoft 解析器实现。 目录: 作为vb的开发者你可能会接触extensible markup language (xml)文档。你现在想处理xml文档并把它集成到你的方案中。你可以自己编程解析,把它当普通文本文档处理,但这样作太没有效率了,没有利用xml的强大之处:它可以结构化的表示数据。 从xml文件中获得信息最好的办法是利用xml解析器。解析器,简单的讲,就是一个软件,它可以使xml文件中的数据易于使用。作为vb的开发者,你可能想得到一个支持document object model (dom)的解析器。dom描述了一系列标准的访问xml和html文档的方法,这些方法解析器应该实现。一个支持dom的解析器应该把xml中的数据变成一系列对象,这样就可以对这些对象二次编程。在这篇文章中,你会学习如何利用microsoft 解析器(msxml.dll)实现的dom结构访问和维护xml文档。 在我们继续前进时,让我们先看一段xml代码来了解这个解析器怎样使我们生活变得容易。下面这个叫cds.xml的文档用来表示一个唱片的各个项目,每个项目包含象主唱,标题,音轨这样的信息。 <? xml version="1.0"?> <! doctype compactdiscs system "cds.dtd"> <compactdiscs> <compactdisc> <artist type="individual">frank sinatra</artist> <title numberoftracks="4">in the wee small hours</title> <tracks> <track>in the wee small hours</track> <track>mood indigo</track> <track>glad to be unhappy</track> <track>i get along without you very well</track> </tracks> <price>$12.99</price> </compactdisc> <compactdisc> <artist type="band">the offspring</artist> <title numberoftracks="5">americana</title> <tracks> <track>welcome</track> <track>have you ever</track> <track>staring at the sun</track> <track>pretty fly (for a white guy)</track> </tracks> <price>$12.99</price> </compactdisc> </compactdiscs> 上面的文档的第二行引用了一个外部dtd(文档类型描述),dtd描述了一个特定类型的xml的层次结构和能包括的内容。xml解析器利用dtd来验证xml文档的正确性。dtd只是你用来让解析器验证xml文档是否合法的办法的一种,另一个越来越受欢迎的方法是xml schemas,它用xml来描述schemas而不是dtd。与dtd不同的是, schema是用xml来描述的,也就是使用它自己的"有趣的"语法。 下面的文档是cds.xml用到的cds.dtd。 <! element compactdiscs (compactdisc*)> <! element compactdisc (artist, title, tracks, price)> <! entity % type "individual | band"> <! element artist (#pcdata)> <! attlist artist type (%type;) #required> <! element title (#pcdata)> <! attlist title numberoftracks cdata #required> <! element tracks (track*)> <! element price (#pcdata)> <!element track (#pcdata)> 本文不会对dtd和xml schemas讨论过深,基于xml-data的xml schema reference已提交给w3c。
xml dom结构将xml文档的内容实现为一个对象模型。w3c的dom level 1 说明定义了dom结构如何实现属性,方法,事件等等。微软的dom实现完全支持w3c标准,并且还有许多使程序更容易访问xml文件的新增特点。 要使用dom,需要创建一个xml解析器的实例。微软公司在msxml.dll中创建了一系列标准的com接口来使创建实例变得可能。msxml.dll中包含了类型库和可应用的代码,这些你可以用来处理xml文件。如果你使用可实现脚本的客户端,比如vbscript 和ie,你可以使用createobject方法来得到解析器的实例。 set objparser = createobject( "microsoft.xmldom") 如果你使用asp (active server page),你使用server.createobject方法。 set objparser = server.createobject( "microsoft.xmldom" ) 如果你在使用vb,你可以创建一个对msxml类型库的引用,这样就可以访问dom。要在vb6.0中使用msxml,操作如下:
dim xdoc as msxml.domdocument set xdoc = new msxml.domdocument 你可以通过两个途径获得msxml.dll。
一旦你建立了类型库的引用,你就可以执行解析,调入文档,总之,你可以处理xml文档了。 你可能有一些迷惑,我该干些什么?如果你打开msxml库,用visual basic 6.0对象察看器察看其中的对象模型,你会发现很丰富。本文会告诉你如何利用domdocument类和ixmldomnode界面来访问xml文档。
要调入一个xml文档,先必须创建一个domdocument的实例。 dim xdoc as msxml.domdocument set xdoc = new msxml.domdocument 当你获得一个合法的引用,你就可以用load方法来调入一个文档。解析器可以从本地硬盘调入或者通过unc和url从网络上调入。 从硬盘调入如下: if xdoc.load("c:\my documents\cds.xml") then ' 文档调入成功 ' 作我们喜欢作的事 else ' 文档调入失败 end if 当你完成工作,你需要释放掉这个引用,msxml没有直接实现close方法,你最好直接将它设置成nothing来关闭它。 set xdoc = nothing 当你调用一个文档,默认是异步进行,你可以通过修改async属性来更改它。如果你要操作文档,你必须先检查readystate属性来确认文档的状态,它会返回五种可能的结果。
本文关键:XML DOM
相关方案
| ||||||||||||||||||
