C#實作XML文件的增刪改查功能的範例程式碼分享
c#
xml
增刪改查
這篇文章主要介紹了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>
登入後複製
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; } }
登入後複製
以上是C#實作XML文件的增刪改查功能的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前
By DDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前
By DDD
Inzoi:如何申請學校和大學
4 週前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
2 週前
By DDD
Roblox:Dead Rails - 如何召喚和擊敗Nikola Tesla
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
