c# XElement XML操作總結
來源 :
http://www.1100w.com/c-xelement-xml%E6%93%8D%E4%BD%9C%E6%80%BB%E7%BB%93/
以前也操作過xml,但是都是簡單的功能,要么就是創建一個xml,要么就是從現有的xml讀取。也記錄了相關的操作,文章為:c# 讀寫xml文件操作。但最近的項目需要對相關的xml內容進行相關的操作,如添加、刪除等。所以在這里對本次項目關於xml的測試大體總結一下。
測試主要功能有:
1.讀取xml
2.遍歷xml
3.添加元素
4.查找元素
5.修改元素
6.刪除元素
7.創建xml
主要使用的類為XElement。使用的xml為
<?xml version="1.0" encoding="utf-8"?> <Books> <Book> <Title>圖書1</Title> <Author>作者1</Author> </Book> <Book> <Title>圖書2</Title> <Author>作者2</Author> </Book> <Book> <Title>圖書3</Title> <Author>作者3</Author> </Book> </Books>
使用的文件路徑
private readonly string _path = string.Format("{0}\\test.xml", Environment.CurrentDirectory);
1.讀取xml
XElement file = XElement.Load(_path);
textBox1.Text = file + Environment.NewLine;
2.遍歷xml
textBox1.Clear(); XElement file = XElement.Load(_path); foreach (XElement book in file.Descendants("Book")) { XElement title = book.Element("Title"); XElement author = book.Element("Author"); textBox1.AppendText(string.Format("{0}:{1}", title.Value, author.Value) + Environment.NewLine); }
3.添加元素
XElement file = XElement.Load(_path); textBox1.Text = file + Environment.NewLine; var node = new XElement("Book", new XElement("Title", "圖書3"), new XElement("Author", "作者3")); file.Add(node); textBox1.Text = file.ToString();
4.查找元素
XElement file = XElement.Load(_path); XElement book1 = file.Descendants("Book") .Where(x => x.Element("Title").Value == "圖書1").SingleOrDefault(); textBox1.Text = book1.ToString();
5.修改元素
XElement file = XElement.Load(_path); XElement element = file.Descendants("Book") .Where(x => x.Element("Title").Value == "圖書1") .SingleOrDefault(); element.Element("Title").Value = "圖書"; element.Element("Author").Value = "作者"; textBox1.Text = file.ToString();
6.刪除元素
XElement file = XElement.Load(_path); file.Descendants("Book") .Where(x => x.Element("Title").Value == "圖書1") .SingleOrDefault().Remove(); textBox1.Text = file.ToString();
7.創建xml
msdn 官方提供的代碼。
var contacts = new XElement("Contacts", new XElement("Contact", new XElement("Name", "Patrick Hines"), new XElement("Phone", "206-555-0144"), new XElement("Address", new XElement("Street1", "123 Main St"), new XElement("City", "Mercer Island"), new XElement("State", "WA"), new XElement("Postal", "68042") ) ) ); textBox1.Text = contacts.ToString();
下載測試代碼:XMLTest