C#/.NET编程|C#实现XML文档的增删改查

1、 创建实例XML文件(Books.xml)

Everyday Italian - 锐客网 Giada De Laurentiis 200530.00 Harry Potter - 锐客网 J K. Rowling 200529.99 XQuery Kick Start - 锐客网 James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 200349.99 Learning XML - 锐客网 Erik T. Ray 200339.95

2、 创建图书信息实体类(BookInfo.cs)
public class BookInfo { /// /// 图书ID /// public int BookId { set; get; }/// /// 图书名称 /// public string Title { set; get; }/// /// 图书分类 /// public string Category { set; get; }/// /// 图书语言 /// public string Language { set; get; }/// /// 图书作者 /// public string Author { set; get; }/// /// 出版时间 /// public string Year { set; get; }/// /// 销售价格 /// public decimal Price { set; get; } }

3、 创建图书信息业务逻辑类(BookInfoBLL.cs)


using System.Xml; //引用相关文件



public class BookInfoBLL { private string _basePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/xml/Books.xml"; //XML文件路径 private XmlDocument _booksXmlDoc = null; //创建XML文档对象public BookInfoBLL() { try { _booksXmlDoc = new XmlDocument(); //初始化XML文档对象 _booksXmlDoc.Load(_basePath); //加载指定的XML文档 } catch (Exception ex) { throw new Exception("加载XML文档出错:" + ex.Message); } }/// /// 获取图书列表(查) /// /// 参数条件 /// 图书列表 public List GetBookInfoList(BookInfo param) { List bookInfoList = new List(); string xPath = "bookstore/book"; //默认获取所有图书 if (param.BookId != 0) //根据图书ID查询 { xPath = String.Format("/bookstore/book[@id='{0}']", param.BookId); } else if (!String.IsNullOrEmpty(param.Category)) //根据图书类别查询 { xPath = String.Format("/bookstore/book[@category='{0}']", param.Category); } else if (!String.IsNullOrEmpty(param.Title)) //根据图书名称查询 { xPath = String.Format("/bookstore/book[title='{0}']", param.Title); }XmlNodeList booksXmlNodeList = _booksXmlDoc.SelectNodes(xPath); foreach (XmlNode bookNode in booksXmlNodeList) { BookInfo bookInfo = new BookInfo(); bookInfo.BookId = Convert.ToInt32(bookNode.Attributes["id"].Value); //获取属性值 bookInfo.Category = bookNode.Attributes["category"].Value; bookInfo.Language = bookNode.SelectSingleNode("title").Attributes["lang"].Value; //获取子节点的属性值 bookInfo.Title = bookNode.SelectSingleNode("title").InnerText; //获取元素值 bookInfo.Author = bookNode.SelectSingleNode("author").InnerText; bookInfo.Year = bookNode.SelectSingleNode("year").InnerText; bookInfo.Price = Convert.ToDecimal(bookNode.SelectSingleNode("price").InnerText); bookInfoList.Add(bookInfo); } return bookInfoList; }/// /// 增加图书信息(增) /// /// /// public bool AddBookInfo(BookInfo param) { bool result = false; XmlNode root = _booksXmlDoc.SelectSingleNode("bookstore"); //查找 //创建节点 XmlElement bookXmlElement = _booksXmlDoc.CreateElement("book"); XmlElement titleXmlElement = _booksXmlDoc.CreateElement("title"); XmlElement authorXmlElement = _booksXmlDoc.CreateElement("author"); XmlElement yearXmlElement = _booksXmlDoc.CreateElement("year"); XmlElement priceXmlElement = _booksXmlDoc.CreateElement("price"); //给节点赋值 bookXmlElement.SetAttribute("id", param.BookId.ToString()); bookXmlElement.SetAttribute("category", param.Category); titleXmlElement.InnerText = param.Title; //给节点添加元素值 titleXmlElement.SetAttribute("lang", param.Language); //给节点添加属性值 authorXmlElement.InnerText = param.Author; yearXmlElement.InnerText = param.Year; priceXmlElement.InnerText = param.Price.ToString(); //AppendChild 将指定的节点添加到该节点的子节点列表的末尾 bookXmlElement.AppendChild(titleXmlElement); bookXmlElement.AppendChild(authorXmlElement); bookXmlElement.AppendChild(yearXmlElement); bookXmlElement.AppendChild(priceXmlElement); root.AppendChild(bookXmlElement); _booksXmlDoc.Save(_basePath); result = true; return result; }/// /// 修改图书信息(改) /// /// /// public bool EditBookInfo(BookInfo param) { bool result = false; if(param.BookId>0) { string xPath = String.Format("/bookstore/book[@id='{0}']", param.BookId); XmlNode editXmlNode = _booksXmlDoc.SelectSingleNode(xPath); XmlElement editXmlElement = (XmlElement)editXmlNode; if (editXmlElement != null) { editXmlElement.Attributes["category"].Value = https://www.it610.com/article/param.Category; editXmlElement.SelectSingleNode("title").Attributes["lang"].Value = https://www.it610.com/article/param.Language; editXmlElement.SelectSingleNode("title").InnerText = param.Title; editXmlElement.SelectSingleNode("author").InnerText = param.Author; editXmlElement.SelectSingleNode("year").InnerText = param.Year; editXmlElement.SelectSingleNode("price").InnerText = param.Price.ToString(); _booksXmlDoc.Save(_basePath); result = true; } } return result; }/// /// 删除图书信息(删) /// /// /// public bool DeleteBookInfo(BookInfo param) { bool result = false; if (param.BookId > 0) { string xPath = String.Format("/bookstore/book[@id='{0}']", param.BookId); XmlNode delXmlNode = _booksXmlDoc.SelectSingleNode(xPath); if (delXmlNode != null) { _booksXmlDoc.SelectSingleNode("bookstore").RemoveChild(delXmlNode); //移除指定的子节点 _booksXmlDoc.Save(_basePath); result = true; } } return result; }}


【C#/.NET编程|C#实现XML文档的增删改查】

    推荐阅读