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

XMLDOM初学者指南

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1180 更新时间:2009/4/23 11:18:03
d 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 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以获得更多的例子,文章和下载。
  
    

上一页  [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……
    咸宁网络警察报警平台