C#实现XML文档的增删改查

来源:互联网 发布:imap端口号 编辑:程序博客网 时间:2024/05/26 02:21

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

<?xml version="1.0" encoding="iso-8859-1"?><bookstore>  <book id="1" category="COOKING">    <title lang="en">Everyday Italian</title>    <author>Giada De Laurentiis</author>    <year>2005</year>    <price>30.00</price>  </book>  <book id="2" category="CHILDREN">    <title lang="en">Harry Potter</title>    <author>J K. Rowling</author>    <year>2005</year>    <price>29.99</price>  </book>  <book id="3" category="WEB">    <title lang="en">XQuery Kick Start</title>    <author>James McGovern</author>    <author>Per Bothner</author>    <author>Kurt Cagle</author>    <author>James Linn</author>    <author>Vaidyanathan Nagarajan</author>    <year>2003</year>    <price>49.99</price>  </book>  <book id="4" category="WEB">    <title lang="en">Learning XML</title>    <author>Erik T. Ray</author>    <year>2003</year>    <price>39.95</price>  </book></bookstore>
2、 创建图书信息实体类(BookInfo.cs)
public class BookInfo{    /// <summary>    /// 图书ID    /// </summary>    public int BookId { set; get; }    /// <summary>    /// 图书名称    /// </summary>    public string Title { set; get; }    /// <summary>    /// 图书分类    /// </summary>    public string Category { set; get; }    /// <summary>    /// 图书语言    /// </summary>    public string Language { set; get; }    /// <summary>    /// 图书作者    /// </summary>    public string Author { set; get; }    /// <summary>    /// 出版时间    /// </summary>    public string Year { set; get; }    /// <summary>    /// 销售价格    /// </summary>    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);        }    }    /// <summary>    /// 获取图书列表(查)    /// </summary>    /// <param name="param">参数条件</param>    /// <returns>图书列表</returns>    public List<BookInfo> GetBookInfoList(BookInfo param)    {        List<BookInfo> bookInfoList = new List<BookInfo>();        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;    }    /// <summary>    /// 增加图书信息(增)    /// </summary>    /// <param name="param"></param>    /// <returns></returns>    public bool AddBookInfo(BookInfo param)    {        bool result = false;        XmlNode root = _booksXmlDoc.SelectSingleNode("bookstore");  //查找<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;    }    /// <summary>    /// 修改图书信息(改)    /// </summary>    /// <param name="param"></param>    /// <returns></returns>    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 = param.Category;                editXmlElement.SelectSingleNode("title").Attributes["lang"].Value = 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;    }    /// <summary>    /// 删除图书信息(删)    /// </summary>    /// <param name="param"></param>    /// <returns></returns>    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;    }}

原创粉丝点击