转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
XMLDOM初学者指南         ★★★★

XMLDOM初学者指南

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1167 更新时间:2009/4/23 11:18:03
     总述:本文主要讨论如何利用XMLDOM访问和维护XML文档,这个XMLDOM由Microsoft 解析器实现。
  
  目录:
  
  简介
  
  DOM是什么
  
  如何使用DOM
  
  如何Load一个文档
  
  处理错误
  
  如何从XML文档中取得信息
  
  如何遍历XML文档
  
  下一步该干什么
  
  简介:
  
  作为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。
  
  DOM是什么:
  
   
  
  XML DOM结构将XML文档的内容实现为一个对象模型。W3C的DOM 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.0,MSXML解析器是其中集成的部件。
  或者你可以到相关网站上下载它
  一旦你建立了类型库的引用,你就可以执行解析,调入文档,总之,你可以处理XML文档了。
  
  你可能有一些迷惑,我该干些什么?如果你打开MSXML库,用Visual Basic 6.0对象察看器察看其中的对象模型,你会发现很丰富。本文会告诉你如何利用DOMDocument类和IXMLDOMNode界面来访问XML文档。
  
  
  
   
  
  如何Load一个文档:
  
  要调入一个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属性来确认文档的状态,它会返回五种可能的结果。
  
  状态
   属性值
  
  未初始化:调入文档没有开始
   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的属性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
  
  En

[1] [2]  下一页


[网页制作]HTML 初学者指南(十)  [网页制作]HTML 初学者指南(九)
[网页制作]HTML 初学者指南(八)  [网页制作]HTML 初学者指南(七)
[网页制作]HTML 初学者指南(六)  [网页制作]HTML 初学者指南(五)
[网页制作]HTML 初学者指南(四)  [网页制作]HTML 初学者指南(三)
[网页制作]HTML 初学者指南(二)  [网页制作]HTML 初学者指南(一)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台