c#对XML的增、删、查、改

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Xml;

namespace MyFriends
{
    class friends_xml
    {
        XmlDocument doc = new XmlDocument();
        private string xmlpath;
        //xmlPath载入的文档路径
        public friends_xml(string xmlPath)
        {
            xmlpath = xmlPath;
            doc.Load(xmlPath);
        }
        //返回文档的所有client节点
        public XmlNodeList nameList()
        {
            XmlNode xn = doc.SelectSingleNode("friend");
            return xn.ChildNodes;
        }
        //设置客户的参数
        public string name = "";//客户的名字
        public string sex = "";//客户的性别
        public string phone = "";//客户的电话
        public string zj = "";//座机
        public string address = "";//地址
        public string comment = "";//备注
        //检索指定的用户
        public void selectId(int i)
        {
            XmlNode xn = doc.SelectSingleNode("friend");
            XmlNode xnl = xn.ChildNodes.Item(i);
            sex = xnl.SelectSingleNode("sex").InnerText.ToString();
            phone = xnl.SelectSingleNode("phone").InnerText.ToString();
            zj = xnl.SelectSingleNode("zj").InnerText.ToString();
            address = xnl.SelectSingleNode("address").InnerText.ToString();
            comment = xnl.SelectSingleNode("comment").InnerText.ToString();
        }
        //添加新的客户
        public void addClient(int i, string name, string sex, string phone, string zj, string address, string comment)
        {
            XmlNode xn = doc.SelectSingleNode("friend");//查找<friend>
            XmlElement xel = doc.CreateElement("client");//创建一个<client>节点
            xel.SetAttribute("id", i.ToString());//设置该节点的id属性
            xel.SetAttribute("name", name);//设置该节点的name属性

            XmlElement xelSex = doc.CreateElement("sex");//设置<sex>节点
            xelSex.InnerText = sex;//设置文本节点
            xel.AppendChild(xelSex);//添加到<client>节点中
            XmlElement xelPhone = doc.CreateElement("phone");//设置<phone>节点
            xelPhone.InnerText = phone;//设置文本节点
            xel.AppendChild(xelPhone);//添加到<client>节点中
            XmlElement xelZj = doc.CreateElement("zj");//设置<num>节点
            xelZj.InnerText = zj;//设置文本节点
            xel.AppendChild(xelZj);//添加到<client>节点中
            XmlElement xelAddress = doc.CreateElement("address");//设置<address>节点
            xelAddress.InnerText = address;//设置文本节点
            xel.AppendChild(xelAddress);//添加到<client>节点中
            XmlElement xelComment = doc.CreateElement("comment");//设置<comment>节点
            xelComment.InnerText = comment;//设置文本节点
            xel.AppendChild(xelComment);//添加到<client>节点中

            xn.AppendChild(xel);//添加到<friend>节点中
            doc.Save(xmlpath);//保存xml
        }
        //修改现有客户信息
        public void clientAlert(int i, string name, string sex, string phone, string zj, string address, string comment)
        {
            XmlNode xn = doc.SelectSingleNode("friend");
            XmlElement xel = (XmlElement)xn.ChildNodes.Item(i);//将子节点类型转换为XmlElement类型
            xel.SetAttribute("name", name);

            XmlNodeList xnlt = xel.ChildNodes;
            xnlt.Item(0).InnerText = sex;
            xnlt.Item(1).InnerText = phone;
            xnlt.Item(2).InnerText = zj;
            xnlt.Item(3).InnerText = address;
            xnlt.Item(4).InnerText = comment;

            doc.Save(xmlpath);//保存
        }
        //删除一个客户信息
        public void clientDel(int i)
        {
            XmlNode xn = doc.SelectSingleNode("friend");
            XmlNodeList xel = xn.ChildNodes;
            //删除选定的子节点
            //XmlElement xet = (XmlElement)xel.Item(i);
            //xet.RemoveAll();
            xn.RemoveChild(xel.Item(i));
            //修改选定子节点后面的节点的id值
            for (int j = i + 1; j < xel.Count; j++)
            {
                XmlElement xet_j = (XmlElement)xel.Item(j);
                xet_j.SetAttribute("id", i.ToString());
                i++;
            }
            doc.Save(xmlpath);//保存
        }
    }
}

 

posted @ 2012-08-16 17:02  Medeor  阅读(150)  评论(0)    收藏  举报