XML常用操作

来源:互联网 发布:淘宝装修代码运行不了 编辑:程序博客网 时间:2024/05/20 04:12
 

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

原创粉丝点击