excelXML文档 XML文档元素的遍历、添加和删除操作的方法,【excel助手】今天为大家分享一篇干货知识,如何设置excelXML文档countif函数查重复excelXML文档 XML文档元素的遍历、添加和删除操作的方法”快跟着小编来看看这一干货文章吧!
借助于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文档中移除。