本示例用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;

        }

    }

}