本示例用XML文件来代替关系型数据库,主要展示的是对XML文件内容的各种操作;并通过单例模式进行唯一实例化的操作
本示例用XML文件来代替关系型数据库,主要展示的是对XML文件内容的各种操作;并通过单例模式进行唯一实例化的操作:
1、建立XML文档
<?xml version="1.0" encoding="utf-8"?>
<Students>
<stu id="1">
<name>小谭</name>
<age>21</age>
<sex>男</sex>
</stu>
</Students>
2、建立类似DAL层的数据库访问类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entity;
using System.Xml;
namespace DAL
{
public class StudentDAL
{
private static StudentDAL _Instance = null;
public static StudentDAL Instance
{
get {
if (_Instance == null)
{
_Instance = new StudentDAL();
}
return _Instance;
}
}
private string FileName = @"xml文件的路径";
/// <summary>
/// 添加
/// </summary>
/// <param name="stu">学生对象</param>
public void Insert(Student stu)
{
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
XmlNode lastEle = doc.DocumentElement.SelectSingleNode("//stu[last()]");
if (lastEle != null)
{
stu.ID = int.Parse(lastEle.Attributes["id"].Value) + 1;
}
else {
stu.ID = 1;
}
XmlElement stuElement = doc.CreateElement("stu");
stuElement.SetAttribute("id", stu.ID.ToString());
XmlElement name = doc.CreateElement("name");
name.AppendChild(doc.CreateTextNode(stu.Name));
XmlElement age = doc.CreateElement("age");
age.AppendChild(doc.CreateTextNode(stu.Age.ToString()));
XmlElement sex = doc.CreateElement("sex");
sex.AppendChild(doc.CreateTextNode(stu.Sex));
stuElement.AppendChild(name);
stuElement.AppendChild(age);
stuElement.AppendChild(sex);
doc.DocumentElement.AppendChild(stuElement);
doc.Save(FileName);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="stu"></param>
public void Modify(Student stu)
{
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
XmlNode CurrentNode = doc.DocumentElement.SelectSingleNode("//stu[@id="+stu.ID+"]");
if (CurrentNode == null)
{
return;
}
CurrentNode.SelectSingleNode("name").FirstChild.Value = stu.Name;
CurrentNode.SelectSingleNode("age").FirstChild.Value = stu.Age.ToString();
CurrentNode.SelectSingleNode("sex").FirstChild.Value = stu.Sex;
doc.Save(FileName);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="ID"></param>
public void Delete(int ID)
{
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
XmlNode CurrentNode = doc.DocumentElement.SelectSingleNode("//stu[@id=" + ID + "]");
if (CurrentNode == null)
{
return;
}
CurrentNode.ParentNode.RemoveChild(CurrentNode);
doc.Save(FileName);
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="IDList"></param>
public void Delete(List<int> IDList)
{
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
foreach (var id in IDList)
{
XmlNode CurrentNode = doc.DocumentElement.SelectSingleNode("//stu[@id=" + id + "]");
if (CurrentNode == null)
{
return;
}
CurrentNode.ParentNode.RemoveChild(CurrentNode);
}
doc.Save(FileName);
}
/// <summary>
/// 查询所有
/// </summary>
/// <returns></returns>
public List<Student> Search()
{
List<Student> list = new List<Student>();
XmlDocument doc = new XmlDocument();
doc.Load(FileName);
XmlNodeList nodeList = doc.DocumentElement.SelectNodes("//stu");
foreach (XmlNode item in nodeList)
{
Student stu = new Student();
stu.ID = int.Parse(item.Attributes["id"].Value);
stu.Name = item.SelectSingleNode("name").FirstChild.Value;
stu.Sex = item.SelectSingleNode("sex").FirstChild.Value;
stu.Age = int.Parse(item.SelectSingleNode("age").FirstChild.Value);
list.Add(stu);
}
return list;
}
}
}