本示例用XML文件来代替关系型数据库,主要展示的是对XML文件内容的各种操作;并通过单例模式进行唯一实例化的操作:

1、建立XML文档

<?xml version="1.0" encoding="utf-8"?>
<Students>
  
<stu id="1">
    
<name>小谭</name>
    
<age>21</age>
    
<sex></sex>
  
</stu> 
</Students>

 url:http://greatverve.cnblogs.com/archive/2011/07/07/xml-oper.html

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;
        }
    }
}
end

相关文章: