XML文檔元素的遍歷、添加和刪除操作
1、啟動Excel并創(chuàng)建一個新文檔,打開Visual Basic編輯器,創(chuàng)建一個模塊,在模塊的“代碼”窗口中輸入如下代碼。按F5鍵運行程序代碼,在“立即窗口”中顯示XML文檔數(shù)據(jù),如圖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&"\學(xué)生信息.xml" '加載XML數(shù)據(jù)文檔
Set nodeList=xmldoc.getElementsByTagName("學(xué)生信息") '獲取學(xué)生信息節(jié)點序列
For Each node In nodeList '遍歷節(jié)點序列中所有節(jié)點
Debug.Print node.XML '輸出當(dāng)前節(jié)點的XML字符串
Next
Set node=Nothing
Set nodeList=Nothing
Set xmldoc=Nothing
End Sub
圖1 在“立即窗口”中顯示XML文檔數(shù)據(jù)
2、在“代碼”窗口中繼續(xù)輸入如下程序代碼。運行程序代碼,在“立即窗口”中可以看到程序運行的結(jié)果。此時,學(xué)生信息節(jié)點都添加了“入學(xué)日期”節(jié)點項,如圖2所示。程序在當(dāng)前Excel文檔相同的文件夾中生成名為“學(xué)生信息New.xml”的文件,其中學(xué)生信息的節(jié)點添加了相應(yīng)的“入學(xué)日期”節(jié)點項,并且這些節(jié)點都以當(dāng)前時間作為初始設(shè)置數(shù)據(jù),如圖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&"\學(xué)生信息.xml" '加載XML數(shù)據(jù)文檔
Set rootNode=xmldoc.DocumentElement '獲取文檔根節(jié)點
For Each node In rootNode.ChildNodes '遍歷根節(jié)點所有學(xué)生信息子節(jié)點
Set newNode=xmldoc.createElement("入學(xué)日期") '創(chuàng)建"入學(xué)日期"元素節(jié)點
Set rtnnode=node.appendChild(newNode) '將新節(jié)點插入到當(dāng)前學(xué)生信息節(jié)點
rtnnode.Text=Format(Now,"yyyy-mm-dd") '設(shè)置當(dāng)前插入節(jié)點的文本信息
Debug.Print node.XML '輸出當(dāng)前學(xué)生信息節(jié)點的XML字符串
Next
On Error Resume Next
Kill ThisWorkbook.Path&"\學(xué)生信息New.xml" '刪除臨時文檔
On Error GoTo 0
xmldoc.Save ThisWorkbook.Path&"\學(xué)生信息New.xml" '保存XML文檔
Set node=Nothing
Set xmldoc=Nothing
End Sub
圖2 “立即窗口”中顯示的程序運行結(jié)果
圖3 XML文檔中添加了新的節(jié)點項
提示
程序使用For...Each In結(jié)構(gòu)遍歷XML文檔的所有節(jié)點,使用節(jié)點對象的AppendChild方法來實現(xiàn)節(jié)點的添加。在默認(rèn)情況下,AppendChild方法將新建立的節(jié)點插入到父節(jié)點中最后一個子節(jié)點之后。如果需要將節(jié)點插入到其他節(jié)點之前,則需要使用InsertBefore方法。該方法除了接受節(jié)點對象參數(shù)外,還接受目標(biāo)節(jié)點對象,插入節(jié)點將位于該目標(biāo)節(jié)點之前。
3、在“代碼”窗口中輸入如下代碼。運行程序代碼,在“立即窗口”中顯示程序運行結(jié)果。這里,“入學(xué)日期”節(jié)點項已經(jīng)被移除,如圖4所示。打開“學(xué)生信息New.xml”文件,可以查看到刪除XML文檔元素后的文檔內(nèi)容,如圖5所示。
Sub DeleteElement()
Dim xmldoc As DOMDocument
Dim node As IXMLDOMNode,rootNode As IXMLDOMNode
Set xmldoc=New DOMDocument
xmldoc.Load ThisWorkbook.Path&"\學(xué)生信息New.xml" '加載XML數(shù)據(jù)文檔
Set rootNode=xmldoc.DocumentElement '獲取根節(jié)點
For Each node In rootNode.ChildNodes '遍歷所有"學(xué)生信息"
node.RemoveChild node.ChildNodes(node.ChildNodes.Length-1) '移除"入學(xué)日期"節(jié)點
Debug.Print node.XML '輸出節(jié)點的XML字符串
Next
On Error Resume Next
Kill ThisWorkbook.Path&"\學(xué)生信息New.xml" '刪除臨時文檔
On Error GoTo 0
xmldoc.Save ThisWorkbook.Path&"\學(xué)生信息New.xml" '重新保存文檔
Set node=Nothing
Set xmldoc=Nothing
End Sub
圖4 “立即窗口”中顯示程序運行結(jié)果
圖5 XML文檔中的數(shù)據(jù)結(jié)構(gòu)
提示
程序中使用RemoveChild方法將“入學(xué)日期”節(jié)點項從XML文檔中移除。
繼續(xù)查找其他問題的答案?
-
Excel 2019如何使用復(fù)制、粘貼命令插入Word數(shù)據(jù)?(視頻講解)
2021-01-257次播放
-
Excel 2019如何制作數(shù)據(jù)透視表?(視頻講解)
2021-01-2227次播放
-
Excel 2019如何設(shè)置相對引用?(視頻講解)
2021-01-2210次播放
-
2021-01-2212次播放
-
Excel 2019如何使用命令復(fù)制公式?(視頻講解)
2021-01-226次播放
-
2021-01-223次播放
-
2021-01-222次播放
-
Excel 2019如何利用開始選項卡進(jìn)入篩選模式?(視頻講解)
2021-01-223次播放
-
Excel 2019如何設(shè)置指定數(shù)據(jù)的篩選?(視頻講解)
2021-01-223次播放
-
Excel 2019如何設(shè)置自定義排序?(視頻講解)
2021-01-222次播放
點擊加載更多評論>>