【黑马.net程序员】C#简单的操作Xml文件

来源:互联网 发布:如何禁止软件自动升级 编辑:程序博客网 时间:2024/05/17 04:19
------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流!

      最近学习了xml,感觉xml的优越性很强,适合很多操作平台,也恰好在学习C#,就顺便写了个c#操作xml文件的小程序,包含生成XML文件(增加数据、修改数据、删除等),若有不足之处,请大家指出。
主要有一个Student.cs包含(学生的一些个人信息:学号、姓名、性别、等信息)
using System;using System.Collections.Generic;using System.Text;namespace ParseXML{    [Serializable]    /// <summary>    /// 学员类    /// </summary>    class Student    {        public Student()        {            studentList = new List<Student>();        }        private string sID;        private string name;        private int age;        private string sex;        private string address;       public string phone;        /// <summary>        /// 住址        /// </summary>        public string Address        {            get { return address; }            set { address = value; }        }        /// <summary>        /// 性别        /// </summary>        public string Sex        {            get { return sex; }            set { sex = value; }        }        /// <summary>        /// 年龄        /// </summary>        public int Age        {            get { return age; }            set { age = value; }        }        /// <summary>        /// 姓名        /// </summary>        public string Name        {            get { return name; }            set { name = value; }        }        /// <summary>        /// 学号        /// </summary>        public string SID        {            get { return sID; }            set { sID = value; }        }        public string Phone        {            get { return phone; }            set { phone = value; }        }        private IList<Student> studentList = new List<Student>();       /// <summary>       /// student       /// </summary>        public IList<Student> StudentList        {            get { return studentList; }            set { studentList = value; }        }    }}

2.xml操作类,包含生成xml文件、对数据添加、删除、修改等操作
using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Windows.Forms;namespace ParseXML{    /// <summary>    /// XML文件操作类    /// </summary>    class XMLFunc    {        /// <summary>        /// 创建XML文档        /// </summary>        /// <param name="path"></param>        public static void CreateXML(string path, Student stu)        {            XmlTextWriter xw = new XmlTextWriter(path, Encoding.UTF8);            xw.WriteStartDocument();            xw.Formatting = Formatting.Indented;            xw.WriteStartElement("Students");            xw.WriteStartElement("Student");            xw.WriteStartElement("SID");            xw.WriteStartAttribute("id");            xw.WriteValue(stu.SID.ToString());            xw.WriteEndAttribute();            xw.WriteValue(stu.SID.ToString());            xw.WriteEndElement();            xw.WriteStartElement("Name");            xw.WriteValue(stu.Name);            xw.WriteEndElement();            xw.WriteStartElement("Age");            xw.WriteValue(stu.Age.ToString());            xw.WriteEndElement();            xw.WriteStartElement("Sex");            xw.WriteValue(stu.Sex);            xw.WriteEndElement();            xw.WriteStartElement("Address");            xw.WriteValue(stu.Address);            xw.WriteEndElement();            xw.WriteStartElement("Telphone");            xw.WriteValue(stu.phone);            xw.WriteEndElement();            xw.WriteEndElement();            xw.WriteEndElement();            xw.WriteEndElement();            xw.Flush();            xw.Close();            MessageBox.Show(path + " 创建成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        }        /// <summary>        /// 添加数据        /// </summary>        /// <param name="path">XML文件路径</param>        /// <param name="stu">学员</param>        public static void Append(string path, Student stu)        {            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(path);            XmlNode xnl = xmlDoc.DocumentElement;            for (int j = 0; j < xnl.ChildNodes.Count; j++)            {                if (xnl.ChildNodes[j].ChildNodes[0].Attributes["id"].Value == stu.SID.ToString())                {                    MessageBox.Show("已经包含了一个学号为:" + stu.SID + " 的学员!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);                    return;                }            }            XmlNode node = xmlDoc.SelectSingleNode("Students");            XmlElement xes = xmlDoc.CreateElement("Student");            XmlElement xeid = xmlDoc.CreateElement("SID");            xeid.SetAttribute("id", stu.SID.ToString());            xeid.InnerText = stu.SID.ToString();            XmlElement xename = xmlDoc.CreateElement("Name");//添加各个节点 name,age,sex,address,telphone            xename.InnerText = stu.Name;            XmlElement xeage = xmlDoc.CreateElement("Age");            xeage.InnerText = stu.Age.ToString();            XmlElement xesex = xmlDoc.CreateElement("Sex");            xesex.InnerText = stu.Sex;            XmlElement xeadd = xmlDoc.CreateElement("Address");            xeadd.InnerText = stu.Address;            XmlElement xeapp = xmlDoc.CreateElement("telphone");            xeadd.InnerText = stu.phone;            xes.AppendChild(xeid);            xes.AppendChild(xename);            xes.AppendChild(xeage);            xes.AppendChild(xesex);            xes.AppendChild(xeadd);            xes.AppendChild(xeapp);            node.AppendChild(xes);            xmlDoc.Save(path);            MessageBox.Show("追加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        }        /// <summary>        /// 修改        /// </summary>        /// <param name="path">XML文件路径</param>        /// <param name="id">学号</param>        /// <param name="stu">学员对象</param>        public static void Edit(string path, string id, Student stu)        {            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(path);            XmlNode xnl = xmlDoc.DocumentElement;            XmlNode node = null;            for (int j = 0; j < xnl.ChildNodes.Count; j++)            {                if (xnl.ChildNodes[j].ChildNodes[0].Attributes["id"].Value == id)                {                    node = xnl.ChildNodes[j];                }            }            if (node == null)                return;            node.ChildNodes[1].InnerText = stu.Name;            node.ChildNodes[2].InnerText = stu.Age.ToString();            node.ChildNodes[3].InnerText = stu.Sex;            node.ChildNodes[4].InnerText = stu.Address;            node.ChildNodes[5].InnerText = stu.phone;            xmlDoc.Save(path);            MessageBox.Show("修改成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        }        /// <summary>        /// 删除操作        /// </summary>        /// <param name="path">XML路径</param>        /// <param name="id">删除的ID</param>        public static void Delete(string path, string id)        {            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(path);            XmlNode xnl = xmlDoc.DocumentElement;            XmlNode node = null;            for (int j = 0; j < xnl.ChildNodes.Count; j++)            {                if (xnl.ChildNodes[j].ChildNodes[0].Attributes["id"].Value == id)                {                    node = xnl.ChildNodes[j];                }            }            if (node == null)                return;            node.ParentNode.RemoveChild(node);            xmlDoc.Save(path);            MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        }        /// <summary>        /// 加载信息        /// </summary>        /// <param name="path"></param>        /// <returns></returns>        public static IList<Student> LoadXML(string path)        {            IList<Student> stuList = new List<Student>();//创建一个Student类的集合            XmlDocument xmlDoc = new XmlDocument();//创建一个XmlDocument类的实例            xmlDoc.Load(path);            XmlNode node = xmlDoc.DocumentElement;            for (int i = 0; i < node.ChildNodes.Count; i++)            {                XmlNode xnl = node.ChildNodes[i];                Student stu = new Student();                stu.SID = xnl["SID"].InnerText;                stu.Name = xnl["Name"].InnerText;                stu.Age = Convert.ToInt32(xnl["Age"].InnerText);                stu.Sex = xnl["Sex"].InnerText;                stu.Address = xnl["Address"].InnerText;            }        }    }}


------------黑马.net培训-----------、wp7培训、.net培训、期待与您交流!

原创粉丝点击