[C#.NET][XML] XML檔案基本操作-XmlDocument
看完本篇將學會對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");
胎哥部門不見了(喜)
範例下載
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET