LINQ to XML实现XML文档的增删改查
2013-12-08 18:37
459 查看
1、实例中的XML文档(Books.xml)
2、 创建图书信息实体类(BookInfo.cs)
3、 创建图书信息业务逻辑类(BookInfoBLL.cs)
<?xml version="1.0" encoding="utf-8"?> <bookstore> <book id="1" category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <publishDate>2005-08-15</publishDate> <price>29.99</price> </book> <book id="2" category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <publishDate>2003-10-18</publishDate> <price>39.95</price> </book> <book id="3" category="WEB"> <title>XQuery Kick Start</title> <author>James McGovern</author> <publishDate>2005-06-25</publishDate> <price>49.99</price> </book> </bookstore>
2、 创建图书信息实体类(BookInfo.cs)
/// <summary> /// 图书信息实体类 /// </summary> public class BookInfo { public int BookId { set; get; } //图书ID public string Title { set; get; } //图书名称 public string Category { set; get; } //图书分类 public string Author { set; get; } //图书作者 public DateTime PublishDate { set; get; } //出版时间 public Double Price { set; get; } //销售价格 }
3、 创建图书信息业务逻辑类(BookInfoBLL.cs)
using System.Linq; using System.Xml.Linq;
public class BookInfoBLL { private string _basePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/xml/Books.xml"; //XML文件路径 /// <summary> /// 创建图书XML文档(创建) /// </summary> public void CreateBookXml() { //获取图书列表 List<BookInfo> bookList = GetBookList(); //创建XML文档 XDocument bookDoc = new XDocument(); //创建声明对象 XDeclaration xDeclaration = new XDeclaration("1.0", "utf-8", "yes"); bookDoc.Declaration = xDeclaration; //指定XML声明对象 //创建bookstore节点 XElement xElement = new XElement("bookstore"); foreach (BookInfo book in bookList) { //创建book节点 XElement bookXml = new XElement("book"); //添加属性 bookXml.Add(new XAttribute("id", book.BookId)); bookXml.Add(new XAttribute("category", book.Category)); //添加子节点 bookXml.Add(new XElement("title", book.Title)); bookXml.Add(new XElement("author", book.Author)); bookXml.Add(new XElement("publishDate", book.PublishDate.ToString("yyyy-MM-dd"))); bookXml.Add(new XElement("price", book.Price)); //将book节点添加到bookstore节点中 xElement.Add(bookXml); } //保存文件 bookDoc.Add(xElement); bookDoc.Save(_basePath); } /// <summary> /// 获取图书列表(查询) /// </summary> /// <param name="param">参数条件</param> /// <returns>图书列表</returns> public List<BookInfo> GetBookInfoList(BookInfo param) { List<BookInfo> bookList = new List<BookInfo>(); XElement xml = XElement.Load(_basePath); var bookVar = xml.Descendants("book"); //默认查询所有图书 if (param.BookId != 0) //根据图书ID查询 { bookVar = xml.Descendants("book").Where(a => a.Attribute("id").Value == param.BookId.ToString()); } else if (!String.IsNullOrEmpty(param.Category)) //根据图书类别查询 { bookVar = xml.Descendants("book").Where(a => a.Attribute("category").Value == param.Category); } else if (!String.IsNullOrEmpty(param.Title)) //根据图书名称查询 { bookVar = xml.Descendants("book").Where(a => a.Element("title").Value == param.Title); } bookList = (from book in bookVar select new BookInfo { BookId = int.Parse(book.Attribute("id").Value), Category = book.Attribute("category").Value, Title = book.Element("title").Value, Author = book.Element("author").Value, PublishDate = DateTime.Parse(book.Element("publishDate").Value), Price = double.Parse(book.Element("price").Value) }).ToList(); return bookList; } /// <summary> /// 增加图书信息(新增) /// </summary> /// <param name="param"></param> /// <returns></returns> public bool AddBookInfo(BookInfo param) { XElement xml = XElement.Load(_basePath); //创建book节点 XElement bookXml = new XElement("book"); //添加属性 bookXml.Add(new XAttribute("id", param.BookId)); bookXml.Add(new XAttribute("category", param.Category)); //添加子节点 bookXml.Add(new XElement("title", param.Title)); bookXml.Add(new XElement("author", param.Author)); bookXml.Add(new XElement("publishDate", param.PublishDate.ToString("yyyy-MM-dd"))); bookXml.Add(new XElement("price", param.Price)); xml.Add(bookXml); //保存 xml.Save(_basePath); return true; } /// <summary> /// 修改图书信息(修改) /// </summary> /// <param name="param"></param> /// <returns></returns> public bool EditBookInfo(BookInfo param) { bool result = false; if (param.BookId > 0) { //根据BookId找到要修改的图书XML XElement xml = XElement.Load(_basePath); XElement bookXml = (from db in xml.Descendants("book") where db.Attribute("id").Value == param.BookId.ToString() select db).Single(); //修改属性 bookXml.SetAttributeValue("category", param.Category); //修改子节点 bookXml.SetElementValue("title", param.Title); bookXml.SetElementValue("author", param.Author); bookXml.SetElementValue("publishDate", param.PublishDate.ToString("yyyy-MM-dd")); bookXml.SetElementValue("price", param.Price); //保存 xml.Save(_basePath); result = true; } return result; } /// <summary> /// 删除图书信息(删除) /// </summary> /// <param name="param"></param> /// <returns></returns> public bool DeleteBookInfo(BookInfo param) { bool result = false; if (param.BookId > 0) { //根据BookId找到要删除的图书XML XElement xml = XElement.Load(_basePath); XElement bookXml = (from db in xml.Descendants("book") where db.Attribute("id").Value == param.BookId.ToString() select db).Single(); bookXml.Remove(); //保存 xml.Save(_basePath); result = true; } return result; } /// <summary> /// 获取图书列表 /// </summary> /// <returns></returns> public List<BookInfo> GetBookList() { List<BookInfo> bookList = new List<BookInfo>(); //创建图书1 BookInfo book1 = new BookInfo() { BookId = 1, Category = "CHILDREN", Title = "Harry Potter", Author = "J K. Rowling", PublishDate = new DateTime(2005,08,15), Price = 29.99 }; bookList.Add(book1); //创建图书2 BookInfo book2 = new BookInfo() { BookId = 2, Category = "WEB", Title = "Learning XML", Author = "Erik T. Ray", PublishDate = new DateTime(2003,10,18), Price = 39.95 }; bookList.Add(book2); //创建图书3 BookInfo book3 = new BookInfo() { BookId = 3, Category = "WEB", Title = "XQuery Kick Start", Author = "James McGovern", PublishDate = new DateTime(2005,6,25), Price = 49.99 }; bookList.Add(book3); return bookList; } }
相关文章推荐
- LINQ to XML实现XML文档的增删改查
- Linq技术二:Linq to XML及xml增删改查的不同实现方式
- Linq to xml实现xml数据增删改查
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)zz
- php DOM解析xml文档以及对节点增删改查实现
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- Linq to xml API中 XName 的奇怪实现
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- Linq to XML 增删改查
- 使用LinqToXML增删
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- Linq To Xml实现类似XPath查询(Silverlight下的XPath)
- Linq to XML增删改查
- Linq to Xml 增删查改
- Linq to XML 增删改查
- Linq To Xml操作XML增删改查
- 用Linq to XML的方式查询XML 文档
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C#下通过LINQ实现对XML文档指定节点的删除操作
- 用Linq to XML的方式查询XML 文档