簡介:XML的增刪改查
開發過程中有許多后台操作XML的過程,每次需要操作時都是找很多代碼來參考或者百度一下。今天決定補充下XML操作的知識,把XML操作的增刪改查都寫了一遍,供以后開發參考
查詢:
Public Sub Read() '獲取item節點 Dim xmlNodeList As XmlNodeList = Nothing xmlNodeList = XmlDoc.SelectNodes("/root/item") '遍歷所有的item節點 Console.WriteLine("遍歷item節點") For Each xmlNode As XmlNode In xmlNodeList Console.WriteLine("item節點的RoomInfo屬性讀取:{0}", xmlNode.Attributes("RoomInfo").Value) Console.WriteLine("item節點的RoomInfo的值讀取:{0}", xmlNode.InnerText) Next '遍歷所有items下的item節點 Console.WriteLine("遍歷items下的item節點") xmlNodeList = XmlDoc.SelectNodes("/root/items/item") For Each xmlNode As XmlNode In xmlNodeList Console.WriteLine("item節點的RoomInfo屬性讀取:{0}", xmlNode.Attributes("RoomInfo").Value) Console.WriteLine("item節點的RoomInfo的值讀取:{0}", xmlNode.InnerText) Next '遍歷第一個items下的item節點 (第一種方法適用於有id的) Console.WriteLine("遍歷第一個items下的item節點") xmlNodeList = XmlDoc.SelectNodes("/root/items[@id='item1']/item") For Each xmlNode As XmlNode In xmlNodeList Console.WriteLine("item節點的RoomInfo屬性讀取:{0}", xmlNode.Attributes("RoomInfo").Value) Console.WriteLine("item節點的RoomInfo的值讀取:{0}", xmlNode.InnerText) Next '遍歷第一個items下的item節點 (第二種方法適用於節點沒有特別標識) 'Console.WriteLine("遍歷第一個items下的item節點") 'xmlNodeList = XmlDoc.SelectNodes("/root/items") 'Dim xmlNodeList1 As XmlNodeList = xmlNodeList(0).SelectNodes("item") 'For Each xmlNode As XmlNode In xmlNodeList1 ' Console.WriteLine("item節點的RoomInfo屬性讀取:{0}", xmlNode.Attributes("RoomInfo").Value) ' Console.WriteLine("item節點的RoomInfo的值讀取:{0}", xmlNode.InnerText) 'Next '遍歷第二個items下的Group下的item節點 Console.WriteLine("遍歷第二個items下的Group下的item節點") xmlNodeList = XmlDoc.SelectNodes("/root/items[@id='item2']/Group[@id='g1']/item") For Each xmlNode As XmlNode In xmlNodeList Console.WriteLine("item節點的RoomInfo屬性讀取:{0}", xmlNode.Attributes("RoomInfo").Value) Console.WriteLine("item節點的RoomInfo的值讀取:{0}", xmlNode.InnerText) Next End Sub
更新:
Public Sub Update() '修改所有的item節點RoomInfo的屬性的值為123 Console.WriteLine("修改所有的item節點RoomInfo的屬性的值為123") Dim xmlNodeList As XmlNodeList = Nothing xmlNodeList = XmlDoc.SelectNodes("/root/item") For Each xmlNode As XmlNode In xmlNodeList xmlNode.Attributes("RoomInfo").Value = "123" Next '修改所有的item節點的值為123 Console.WriteLine("修改所有的item節點的值為123") xmlNodeList = XmlDoc.SelectNodes("/root/item") For Each xmlNode As XmlNode In xmlNodeList xmlNode.InnerText = "123" Next Console.WriteLine(XmlDoc.InnerXml) End Sub
刪除:
Public Sub Delete() '刪除所有的item節點 Console.WriteLine("刪除所有的item節點") Dim xmlNodeList As XmlNodeList = Nothing xmlNodeList = XmlDoc.SelectNodes("/root/item") For Each xmlNode As XmlNode In xmlNodeList xmlNode.ParentNode.RemoveChild(xmlNode) Next '刪除所有的items下的子節點 Console.WriteLine("刪除所有的items下的子節點") xmlNodeList = XmlDoc.SelectNodes("/root/items") For Each xmlNode As XmlNode In xmlNodeList xmlNode.RemoveAll() 'xmlNode.ParentNode.RemoveChild(xmlNode) Next Console.WriteLine(XmlDoc.InnerXml) End Sub
添加:
Public Sub Add() 'item節點添加test=123屬性 Console.WriteLine("item節點添加test=123屬性") Dim xmlNodeList As XmlNodeList = Nothing Dim xmlAttribute As XmlAttribute = Nothing xmlNodeList = XmlDoc.SelectNodes("/root/item") For Each xmlNode As XmlNode In xmlNodeList '屬性的名稱 xmlAttribute = XmlDoc.CreateAttribute("test") xmlAttribute.Value = "123" xmlNode.Attributes.Append(xmlAttribute) Next 'item節點添加子節點<test name="123"> Console.WriteLine("item節點添加子節點<test name='123'>") xmlNodeList = XmlDoc.SelectNodes("/root/item") Dim xmlNewNode As XmlElement = Nothing For Each xmlNode As XmlNode In xmlNodeList xmlNewNode = XmlDoc.CreateElement("test") xmlNewNode.SetAttribute("name", "123") xmlNewNode.InnerText = "123" xmlNode.AppendChild(xmlNewNode) Next XmlDoc.Save("C:\Users\dudj\Desktop\123.xml") Console.WriteLine(XmlDoc.InnerXml) End Sub