`
Eric_2007
  • 浏览: 25083 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

XML DOM 初学者指南

    博客分类:
  • DOM
阅读更多

XML DOM 初学者指南

http://www.yellowsheepriver.com/memberarea/infor/php/html/001/03html/001/0006.htm

 

总述:本文主要讨论如何利用XMLDOM访问和维护XML文档,该XMLDOMMicrosoft 解析器实现。

简介

作为VB的开发者你可能会接触XML文档。你现在想处理XML文档并把它集成到你的方案中。你可以自己编程解析,把它当普通文本文档处理,但这样作太没有效率了,没有利用XML的强大之处:它可以结构化的表示数据。

XML文件中获得信息最好的办法是利用XML解析器。解析器,简单的讲,就是一个软件,它可以使XML文件中的数据易于使用。作为VB的开发者,你可能想得到一个支持Document Object Model (DOM)的解析器。DOM描述了一系列标准的访问XMLHTML文档的方法,这些方法解析器应该实现。一个支持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>

 

DOM是什么

XML DOM结构将XML文档的内容实现为一个对象模型。W3CDOM Level 1 说明定义了DOM结构如何实现属性、方法、事件等等。微软的DOM实现完全支持W3C标准,并且还有许多使程序更容易访问XML文件的新增特点。

如何使用DOM

要使用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,操作如下:

打开Project References

COM对象中选择Microsoft XML, version 2.0,如果你找不到此项,你需要得到它。

你可以创建一个解析器的实例了。

Dim xDoc As MSXML.DOMDocument

Set xDoc = New MSXML.DOMDocument

你可以通过两个途径获得Msxml.dll

你可以安装IE5.0MSXML解析器是其中集成的部件。

或者你可以到相关网站上下载它

一旦你建立了类型库的引用,你就可以执行解析,调入文档,总之,你可以处理XML文档了。

你可能有一些迷惑,我该干些什么?如果你打开MSXML库,用Visual Basic 6.0对象察看器察看其中的对象模型,你会发现很丰富。本文会告诉你如何利用DOMDocument类和IXMLDOMNode界面来访问XML文档。

 

如何Load一个文档

要调入一个XML文档,先必须创建一个DOMDocument的实例。

Dim xDoc As MSXML.DOMDocument

Set xDoc = New MSXML.DOMDocument

当你获得一个合法的引用,你就可以用LOAD方法来调入一个文档。解析器可以从本地硬盘调入或者通过UNCURL从网络上调入。

从硬盘调入如下:

If xDoc.Load("C:\My Documents\cds.xml") Then

文档调入成功

作我们喜欢作的事

Else

文档调入失败

End If

当你完成工作,你需要释放掉这个引用,MSXML没有直接实现CLOSE方法,你最好直接将它设置成Nothing来关闭它。

Set xDoc = Nothing

当你调用一个文档,默认是异步进行,你可以通过修改Async属性来更改它。如果你要操作文档,你必须先检查ReadyState属性来确认文档的状态,它会返回五种可能的结果。

状态                     属性值

未初始化:调入文档没有开始           0

调入:Load方法正在执行             1

调入完成:Load 方法已经完成           2

交互阶段:DOM可以进行只读检验,数据部分解析   3

完成:数据完全解析,可以进行读/写操作      4

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的属性ValidateOnParseFalse

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">




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

一旦你有了文档的DOM引用,你就可以遍历节点的层次。通过文档引用,你可以访问ChildNodes属性,它给出了一个自上而下的包含所有节点的目录。ChildNodes属性实现了IXMLDOMNodeList,它支持Visual BasicFor/Each结构,所以你可以列举出ChildNodes中的所有节点。另外,ChildNodes


上面的文档的第二行引用了一个外部DTD(文档类型描述),DTD描述了一个特定类型的XML的层次结构和能包括的内容。XML解析器利用DTD来验证XML文档的正确性。DTD只是你用来让解析器验证XML文档是否合法的办法的一种,另一个越来越受欢迎的方法是XML Schema,它用XML来描述Schema而不是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)>

本文不会对DTDXML Schemas讨论过深,基于XML-DATAXML Schema Reference已提交给W3C
分享到:
评论

相关推荐

    XML初学者指南配书源码

    在《XML初学者指南》第四版中,可能涵盖了XML的基础概念、解析和生成XML、验证XML文档、XPath和XSLT(用于查询和转换XML)等内容。提供的源码可能包括示例程序,帮助读者理解和实践XML技术。 `bc_114872_ch22.pdf`...

    中文XML开发指南(XML初学者适用)

    本《中文XML开发指南》旨在为初学者提供一个全面且深入的学习资源,帮助他们理解并掌握XML的基础知识和应用技巧。 XML的基本结构由元素、属性、文本内容和声明组成。元素是XML文档的核心,用尖括号包围,如 `...

    XML教程之DOM对象参考手册 chm

    对于初学者来说,理解和掌握DOM对象的使用是掌握XML处理的关键。这个“XML教程之DOM对象参考手册”提供了详细的操作指南,无论是在Web开发、服务器端处理还是数据交换场景中,都能帮助开发者高效地解析和操作XML数据...

    XML初学者实例分析

    &lt;title&gt;XML初学者指南 &lt;author&gt;John Doe ``` 二、XML命名规则 XML元素、属性、命名空间等必须遵循一定的命名规则,比如名称只能包含字母、数字、下划线和点,并且不能以数字开头。 三、XML文档声明 XML文档的...

    dom4J解析XML及dom4jar包

    DOM4J的API设计得非常友好,对于初学者来说,学习曲线相对平缓。 在XML解析方面,DOM4J提供了多种方式来读取和解析XML文件。最常用的方法是通过`DocumentBuilder`来创建一个`Document`对象,这个对象代表了整个XML...

    delphi xml 权威指南

    总的来说,《Delphi XML 权威指南》全面覆盖了Delphi开发中与XML相关的各个方面,无论是初学者还是有经验的开发者,都能从中获得宝贵的指导和实用技巧,提升在XML领域的专业技能。通过深入学习,读者将能够自如地...

    Delphi_XML_权威指南

    《Delphi XML 权威指南》是一本专为Delphi开发者设计的全面解析XML技术的书籍。XML(Extensible Markup Language)作为一种通用...无论是初学者还是经验丰富的开发者,都能从中受益匪浅,进一步拓宽Delphi开发的视野。

    Java XML编程指南

    Java XML编程指南是一本专为初学者设计的教程,旨在帮助读者掌握XML(eXtensible Markup Language)在Java环境中的应用。XML是一种用于标记数据的语言,广泛应用于数据交换、配置存储、文档描述等多个领域。Java与...

    delphi XML 权威指南

    《Delphi XML 权威指南》是一本专为 Delphi 开发者深入理解并有效利用 XML 技术而编写的权威...无论你是初学者还是经验丰富的开发者,通过深入学习和实践书中的内容,都能提升在 Delphi 平台上利用 XML 的能力和效率。

    java_xml编程指南

    《Java XML编程指南》是一本面向Java开发人员的实用教程,旨在帮助读者深入理解XML(eXtensible Markup Language)在Java环境中的...无论是初学者还是经验丰富的开发者,都能从中受益匪浅,提升在XML领域的专业技能。

    XML官方指南(CHM)

    XML(eXtensible Markup Language)是一种用于标记数据的语言,由W3C(World Wide Web Consortium)...总之,这个"XML官方指南(CHM)"是学习XML的理想起点,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。

    XML学习指南(PDF格式)

    通过《XML学习指南》,你将获得关于XML的全面理解,无论你是初学者还是有一定经验的开发者,都能从中受益。这本书可能会涵盖以上提到的各个方面,并提供丰富的实例和练习,帮助你熟练掌握XML的应用。

    xml学习指南,初学的人适用

    以下是一份详细的XML学习指南,旨在为初学者提供一个基础且全面的认识。 1. XML基本概念: - **语法规则**:XML是一种自描述的语言,它使用标签来定义数据的结构。每个标签都以尖括号包围,如 `&lt;tag&gt;` 和 `&lt;/tag&gt;`...

    xml官方指南中文版

    作为“XML官方指南中文版”的资源,它应该是对XML规范的详细解读,帮助初学者和专业人士理解XML的基本概念、语法以及在实际应用中的使用方法。 XML的基础篇通常会涵盖以下核心知识点: 1. **XML概述**:解释XML的...

    Dom4j学习教程+API+xml实用大全+xml学习笔记+htc

    标题"Dom4j学习教程+API+xml实用大全+xml学习笔记+htc"提及了几个关键主题,包括Dom4j的学习资源、API文档,以及关于XML的实用指南和学习笔记,还提到了一个名为"htc"的文件,可能是关于HTC设备或技术的文档。...

    DOM4J 解析XML

    ### DOM4J解析XML知识点详解 #### 一、XML与DOM4J概述 - **XML简介**:XML(Extensible Markup Language,可扩展标记语言)...对于初学者而言,了解这些基本概念和操作是十分重要的,因为它们构成了使用DOM4J的基础。

    [XML]XML指南.rar

    XML,全称可扩展标记语言(Extensible Markup Language),是一种用于标记数据的结构化语言,广泛应用于网络...这个指南对于初学者来说是一份宝贵的参考资料,可以深入理解XML的各个方面,提升处理和应用XML的能力。

    XML4.0编程指南

    总的来说,XML4.0编程指南旨在提供一个全面的XML学习资源,无论你是初学者还是经验丰富的开发者,都能从中受益。通过深入理解XML的原理和实践应用,你可以更高效地构建和维护数据驱动的应用程序,充分利用XML的潜力...

Global site tag (gtag.js) - Google Analytics