Rumah > pembangunan bahagian belakang > Tutorial C#.Net > C#实现XML文档的增删改查功能的示例代码分享

C#实现XML文档的增删改查功能的示例代码分享

黄舟
Lepaskan: 2017-03-27 11:40:33
asal
1460 orang telah melayarinya

这篇文章主要介绍了C#实现XML文档的增删改查功能,结合实例形式分析了xml文档的创建及C#针对xml文档的加载及增删改查等操作技巧,需要的朋友可以参考下

本文实例讲述了C#实现XML文档的增删改查功能。分享给大家供大家参考,具体如下:

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>
Salin selepas log masuk

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; }
}
Salin selepas log masuk

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=&#39;{0}&#39;]", param.BookId);
    }
    else if (!String.IsNullOrEmpty(param.Category)) //根据图书类别查询
    {
      xPath = String.Format("/bookstore/book[@category=&#39;{0}&#39;]", param.Category);
    }
    else if (!String.IsNullOrEmpty(param.Title)) //根据图书名称查询
    {
      xPath = String.Format("/bookstore/book[title=&#39;{0}&#39;]", 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=&#39;{0}&#39;]", 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=&#39;{0}&#39;]", param.BookId);
      XmlNode delXmlNode = _booksXmlDoc.SelectSingleNode(xPath);
      if (delXmlNode != null)
      {
        _booksXmlDoc.SelectSingleNode("bookstore").RemoveChild(delXmlNode);  //移除指定的子节点
        _booksXmlDoc.Save(_basePath);
        result = true;
      }
    }
    return result;
  }
}
Salin selepas log masuk

Atas ialah kandungan terperinci C#实现XML文档的增删改查功能的示例代码分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan