c# XElement XML操作总结
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