转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
使用Visual Basic操纵XML文档         ★★★★

使用Visual Basic操纵XML文档

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1029 更新时间:2009/4/23 18:59:33

使用Visual Basic操纵XML文档


中国航空信息中心 吴斌


对于XML文档,插入、修改、检索等数据操作工作可以通过一个XML解析器及其列举的一系列对象来完成。 Microsoft的XML解析器驻留在名为msxml.dll的动态链接库文件中。因为msxml是一个COM对象,所以可以在任何兼容ActiveX的环境中使用它,如在VB和 ASP中。本文介绍在Visual Basic中操纵XML文档的具体方法。 装载XML文档 新建一个VB Standard EXE工程项目。在Form1中添加一个CommandButton控件,将其Name和Caption属性分别设为cmdLoad和Load XML。为了使用msxml解析器,必须事先设置工程项目对msxml.dll的引用。选择Project菜单的 References命令,选中Microsoft XML, version 2.0或更高版本。将下列代码加入 cmdLoad_Click事件: Option Explicit Dim xml As DOMDocument Private Sub cmdLoad_Click() Set xml = New DOMDocument Call xml.Load(App.Path & “flight.xml") '''' flight.xml为描述航班信息的XML文档 End Sub 运行该程序,点击Load XML按钮即可装载XML文档。载入的XML文档包含一个按照树状结构排列的节点对象集合,顶层节点或根节点是 documentElement。每个节点都有一组属性和方法,每个节点可以包含一个或多个子节点,当然也可以不包含任何节点。必须先取得对根节点的引用才能操纵XML文档。在 cmdLoad_Click事件代码后添加下列代码: Dim root As IXMLDOMElement Set root = xml.documentElement 遍历节点集合 可以使用Visual Basic的For Each...Next循环结构在节点对象集合中循环。在cmdLoad_Click事件代码后添加下列代码: Dim node As IXMLDOMNode For Each node In root.childNodes Debug.Print node.Text Next 运行后点击Load XML按钮,将会在Immediate窗口中看到如下输出结果: 2000年10月15日 北京 首都国际 香港 赤邋角 中国国际航空公司 波音公司 B747 13:00 15:55 上海 浦东 法兰克福 美茵 塔什干 尤日内 汉莎航空公司 空中客车工业公司 A330 21:45 01:45 注意,每个节点的Text属性不仅包含自身的属性值,还包含其下属所有子节点的Text属性值。一般情况下,不会同时操作所有的节点。可以使用 selectNodes方法取得对一个特定的节点子集的引用,selectNodes方法返回一个 IXMLDOMNodeList对象。在cmdLoad_Click事件代码后添加下列代码: Dim flightNodes As IXMLDOMNodeList Set flightNodes = root.selectNodes(“航班") For Each node In flightNodes Debug.Print node.selectSingleNode (“离站时间").Text & “——" &node.selectSingleNode (“到站时间").Text Next 这段代码使用selectNodes方法选择根节点下所有的“航班”节点,然后使用selectSingleNode方法选择“航班”节点下的“离站时间”和“到站时间”,读取并打印它们的Text属性值。 可以使用childNodes集合以递归的方式层次化显示XML 文档的内容。 首先,在Form1中声明一个子过程PrettyPrint。 Public Sub PrettyPrint(node As IXMLDOMNode, Optional tabLevel As Integer=0) Dim childNode As IXMLDOMNode If node.nodeName<>vbNullStrin And node.nodeName < >“#text" Then Debug.PrintString(tabLevel,Chr$(9)) &“< "&node.nodeName&“ >" End If If node.hasChildNodes Then For Each childNode In node.childNodes Call PrettyPrint(childNode,tabLevel+1) Next Else Debug.PrintString(tabLevel+1,Chr$(9))&node.Text End If If node.nodeName< >vbNullString And node.nodeName < >“#text" Then Debug.PrintString (tabLevel,Chr$(9))&“< /"&node.nodeName&“ >" End If End Sub 然后在Form1中加入第2个CommandButton控件,将其 Name和Caption属性分别设为cmdPrint和Print。将下列代码加入事件cmdPrint_Click中: Private Sub cmdPrint_Click() If Not xml Is Nothing Then Call PrettyPrint (xml.documentElement) End If End Sub 运行程序。首先点击Load XML按钮加载flight.xml,然后点击Print按钮。在Immediate窗口中可以看到层次分明、易于阅读的输出结果。子过程 PrettyPrint在documentElement的子节点中循环,打印每个节点的nodeName属性值,而每个子节点又递归调用PrettyPrint。XML文档内各节点内在的相似性是XML最具吸引力的特性,每个子节点都与其父节点有着相同的属性和方法(尽管各自的内容通常不同),这就使得为同一文档中的所有或部分节点编写某种规则变得相对简单。 修改节点内容 如同修改数据库中的记录一样,也可以修改XML文档中节点的内容。下列代码修改了flight.xml文档中“发布日期”节点的Text属性值: Set node = root.selectSingleNode(“发布日期") If Not node Is Nothing Then node.Text = “2000年10月20日" End If 修改了文档内容之后,可以使用Save方法保存修改后的文档。Save方法可以将XML文档保存为文件、数据流或ASP的Response对象。Save方法的用法如下: xml.save App.Path & “flightupdated.xml" 将上面两段代码添加在cmdLoad_Click事件中,运行程序。点击Load XML按钮,在程序工作目录中会增加一个新文件flightupdated.xml。在IE5 中打开该文件,可以看到“发布日期”标记的文本已经被改为“2000年10月20日”。 在实际应用中,XML可以被用作数据传输格式、可搜索数据库、可定制的数据存储方式和显示信息的数据源(需要XSL或如VB这样的编程语言的帮助)。因为msxml是一个COM对象,所以可以在ASP页中使用它的实例,然后方便地使用VBScript或JScript编程来操纵它。


[Web开发]XML与HTML在语法上的主要区别详解  [系统软件]如何让Expat支持中文XML
[VB.NET程序]vb.net 与 XML 的操作  [VB.NET程序]vb.net读写xml(2)--实现datagrid与xml的沟通(原创…
[VB.NET程序]vb.net 读写xml方法(1)  [VB.NET程序][VB.NET+XML]完成简单程序配置
[VB.NET程序]Visual Basic 6 逆向工程与反逆向工程 (2)  [VB.NET程序]Visual Basic 6 逆向工程与反逆向工程 (1)
[VB.NET程序]用Visual Basic创建复杂窗体  [VB.NET程序]Visual Basic的类对于面向对象的支持
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

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

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉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……
    咸宁网络警察报警平台