C#/.NET编程|C#实现XML文档的增删改查
1、 创建实例XML文件(Books.xml)
Everyday Italian - 锐客网
Giada De Laurentiis
2005 30.00
Harry Potter - 锐客网
J K. Rowling
2005 29.99
XQuery Kick Start - 锐客网
James McGovern
Per Bothner
Kurt Cagle
James Linn
Vaidyanathan Nagarajan
2003 49.99
Learning XML - 锐客网
Erik T. Ray
2003 39.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文档的增删改查】
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- paddle|动手从头实现LSTM