设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel2013教程] XML文档元素的遍历、添加和删除操作的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2017-1-16 17:27:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
                               

                        借助于DOM对象,在Excel中,用户可以编写VBA程序方便地对XML文件进行读取、遍历、修改以及删除等操作。本文分别介绍XML文档元素的遍历、添加和删除操作的方法。
        1、启动Excel并创建一个新文档,打开Visual Basic编辑器,创建一个模块,在模块的“代码”窗口中输入如下代码。按F5键运行程序代码,在“立即窗口”中显示XML文档数据,如图1所示。
        Sub GetXMLNode()
        Dim xmldoc As DOMDocument
        Dim nodeList As IXMLDOMNodeList
        Dim node As IXMLDOMNode
        Set xmldoc=New DOMDocument
        xmldoc.async=False
        xmldoc.Load ThisWorkbook.Path&"\学生信息.xml" '加载XML数据文档
        Set nodeList=xmldoc.getElementsByTagName("学生信息") '获取学生信息节点序列
        For Each node In nodeList '遍历节点序列中所有节点
        Debug.Print node.XML '输出当前节点的XML字符串
        Next
        Set node=Nothing
        Set nodeList=Nothing
        Set xmldoc=Nothing
        End Sub
       

        图1 在“立即窗口”中显示XML文档数据

        2、在“代码”窗口中继续输入如下程序代码。运行程序代码,在“立即窗口”中可以看到程序运行的结果。此时,学生信息节点都添加了“入学日期”节点项,如图2所示。程序在当前Excel文档相同的文件夹中生成名为“学生信息New.xml”的文件,其中学生信息的节点添加了相应的“入学日期”节点项,并且这些节点都以当前时间作为初始设置数据,如图3所示。
        Sub AddElement()
        Dim xmldoc As DOMDocument
        Dim node As IXMLDOMNode
        Dim rootNode As IXMLDOMNode
        Dim newNode As IXMLDOMNode
        Dim rtnnode As IXMLDOMNode
        Set xmldoc=New DOMDocument
        xmldoc.Load ThisWorkbook.Path&"\学生信息.xml" '加载XML数据文档
        Set rootNode=xmldoc.DocumentElement '获取文档根节点
        For Each node In rootNode.ChildNodes '遍历根节点所有学生信息子节点
        Set newNode=xmldoc.createElement("入学日期") '创建"入学日期"元素节点
        Set rtnnode=node.appendChild(newNode) '将新节点插入到当前学生信息节点
        rtnnode.Text=Format(Now,"yyyy-mm-dd") '设置当前插入节点的文本信息
        Debug.Print node.XML '输出当前学生信息节点的XML字符串
        Next
        On Error Resume Next
        Kill ThisWorkbook.Path&"\学生信息New.xml" '删除临时文档
        On Error GoTo 0
        xmldoc.Save ThisWorkbook.Path&"\学生信息New.xml" '保存XML文档
        Set node=Nothing
        Set xmldoc=Nothing
        End Sub
       

        图2 “立即窗口”中显示的程序运行结果

       

        图3 XML文档中添加了新的节点项

        提示
        程序使用For...Each In结构遍历XML文档的所有节点,使用节点对象的AppendChild方法来实现节点的添加。在默认情况下,AppendChild方法将新建立的节点插入到父节点中最后一个子节点之后。如果需要将节点插入到其他节点之前,则需要使用InsertBefore方法。该方法除了接受节点对象参数外,还接受目标节点对象,插入节点将位于该目标节点之前。
        3、在“代码”窗口中输入如下代码。运行程序代码,在“立即窗口”中显示程序运行结果。这里,“入学日期”节点项已经被移除,如图4所示。打开“学生信息New.xml”文件,可以查看到删除XML文档元素后的文档内容,如图5所示。
        Sub DeleteElement()
        Dim xmldoc As DOMDocument
        Dim node As IXMLDOMNode,rootNode As IXMLDOMNode
        Set xmldoc=New DOMDocument
        xmldoc.Load ThisWorkbook.Path&"\学生信息New.xml" '加载XML数据文档
        Set rootNode=xmldoc.DocumentElement '获取根节点
        For Each node In rootNode.ChildNodes '遍历所有"学生信息"
        node.RemoveChild node.ChildNodes(node.ChildNodes.Length-1) '移除"入学日期"节点
        Debug.Print node.XML '输出节点的XML字符串
        Next
        On Error Resume Next
        Kill ThisWorkbook.Path&"\学生信息New.xml" '删除临时文档
        On Error GoTo 0
        xmldoc.Save ThisWorkbook.Path&"\学生信息New.xml" '重新保存文档
        Set node=Nothing
        Set xmldoc=Nothing
        End Sub
       

        图4 “立即窗口”中显示程序运行结果

       

        图5 XML文档中的数据结构

        提示
        程序中使用RemoveChild方法将“入学日期”节点项从XML文档中移除。
               
                               
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-7 05:27 , Processed in 0.234031 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表