看完本篇將學會對XML文件的新增、刪除、修改、插入
XmlDocument 用來存放XML文件的類別
XmlElement 存取節點屬性的類別
XmlNode 選取節點的類別
這三個類別就能處理XML文件檔案的新增、刪除、插入、修改,讓我們處理XML檔案一點都不難,
每一個<>內的文字就是代表著節點
新增
使用XmlDocument.CreateElement 方法建立節點
XmlDocument doc = new XmlDocument(); //建立根節點 XmlElement company = doc.CreateElement("Company"); doc.AppendChild(company); //建立子節點 XmlElement department = doc.CreateElement("Department"); department.SetAttribute("部門名稱", "技術部");//設定屬性 department.SetAttribute("部門負責人", "余小章");//設定屬性 //加入至company節點底下 company.AppendChild(department); XmlElement members = doc.CreateElement("Members");//建立節點 //加入至department節點底下 department.AppendChild(members); XmlElement info = doc.CreateElement("Information"); info.SetAttribute("名字", "余小章"); info.SetAttribute("電話", "0806449"); //加入至members節點底下 members.AppendChild(info); info = doc.CreateElement("Information"); info.SetAttribute("名字", "王大明"); info.SetAttribute("電話", "080644978"); //加入至members節點底下 members.AppendChild(info); doc.Save("Test.xml");
這是由程式建立出來的XML檔案
插入
插入節點跟新增節點的用法是一樣的,首先必需要決定要插入哪一個節點,決定好之後就可以開始插了
//插入節點 XmlDocument doc = new XmlDocument(); doc.Load("Test.xml"); XmlNode node = doc.SelectSingleNode("Company/Department");//選擇節點 if (node == null) return; XmlElement main = doc.CreateElement("newPerson"); //添加person節點 main.SetAttribute("name", "小明"); main.SetAttribute("sex", "女"); main.SetAttribute("age", "25"); node.AppendChild(main); XmlElement sub1 = doc.CreateElement("phone"); sub1.InnerText = "123456778"; main.AppendChild(sub1); XmlElement sub2 = doc.CreateElement("address"); sub2.InnerText = "高雄"; main.AppendChild(sub2); doc.Save("Test.xml");
上圖是插入節點後的結果
修改
找出要修改的屬性名稱(Name),然後修改內容(Value)
取得屬性基本上是用GetAttribute 系列方法
設定屬性基本上是用SetAttribute 系列方法
//取得根節點內的子節點 XmlDocument doc = new XmlDocument(); doc.Load("Test.xml"); //選擇節點 XmlNode main = doc.SelectSingleNode("Company/Department"); if (main == null) return; //取得節點內的欄位 XmlElement element = (XmlElement)main; //取得節點內的"部門名稱"內容 string data = element.GetAttribute("部門名稱"); //取得節點內的"部門名稱"的屬性 XmlAttribute attribute = element.GetAttributeNode("部門名稱"); //列舉節點內的屬性 XmlAttributeCollection attributes = element.Attributes; string content = ""; foreach (XmlAttribute item in attributes) { content += item.Name + "," + item.Value + Environment.NewLine; if (item.Name == "部門名稱") item.Value = "胎哥部門"; if (item.Name == "部門負責人") item.Value = "胎哥郎"; } doc.Save("Test.xml"); Console.WriteLine(content);
很清楚的看到余小章變成胎哥郎了XD
刪除
選好節點後用Remove系列的方法刪除
XmlDocument doc = new XmlDocument(); doc.Load("Test.xml"); //選擇節點 XmlNode main = doc.SelectSingleNode("Company/Department"); if (main == null) return; //取得節點內的欄位 XmlElement element = (XmlElement)main; //刪除節點內的屬性 element.RemoveAttribute("部門名稱"); //刪除節點內所有的內容 //element.RemoveAll(); doc.Save("Test.xml");
胎哥部門不見了(喜)
範例下載