C#读取XML文件,以及对XML文件的增删改查

来源:互联网 发布:手机游戏服务端源码 编辑:程序博客网 时间:2024/05/18 02:29
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Xml;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;




namespace RdXML
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }




        string sNode2Value = "";


        private void Form1_Load(object sender, EventArgs e)
        {
            string sFile = @"C:\csv\Base.xml";//文档路径
            string sNode1 = "SESION";           //第一节点
            string sNode2 = "S1";           //要查找/改变的节点
            string sRootName = "CONFIG";      //根节点
            string change = "MYXML";        //需要改变的节点的值
            string addName = "XML";
            string addValue = "123";
            getNode2(sFile, sRootName, sNode1, sNode2);
            changeNode2(sFile, sRootName, sNode1, sNode2, change);
            delNode2(sFile, sRootName, sNode1, sNode2);
            addNode2(sFile, sRootName, sNode1, addName, addValue);
        }


        #region  读取Node2的值
        public void getNode2(string FullFile, string sRootName, string sNodel, string sNode2)
        {
            sNode2 = sNode2.ToUpper();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(FullFile);//加载文件
            XmlNode xn = xmlDoc.SelectSingleNode(sRootName);
            XmlNodeList xnl = xn.ChildNodes;
            //XmlNodeList nodeList = xmlDoc.SelectSingleNode("CONFIG").ChildNodes;//获取根节点的所有子节点
            foreach (XmlNode xnf in xnl)
            {
                XmlElement xmlDoc2 = (XmlElement)xnf;
                XmlNodeList nodelist2 = xmlDoc2.ChildNodes;
                foreach (XmlNode xn2 in nodelist2)
                {
                    string xn2Name = xn2.Name;
                    if (xn2Name.Equals(sNode2))
                    {
                        sNode2Value = xn2.InnerText;
                        break;
                    }
                }
            }
            MessageBox.Show(sNode2Value);
            //return sNode2Value;
        }
        #endregion


        #region 删除一个节点
        public void delNode2(string FullFile, string sRootName, string sNodel, string sNode2)
        {
            sNode2 = sNode2.ToUpper();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(FullFile);//加载文件
            XmlNode xn = xmlDoc.SelectSingleNode(sRootName);
            XmlNodeList xnl = xn.ChildNodes;
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("CONFIG").ChildNodes;//获取根节点的所有子节点
            foreach (XmlNode xnf in xnl)
            {
                XmlElement xmlDoc2 = (XmlElement)xnf;
                XmlNodeList nodelist2 = xmlDoc2.ChildNodes;
                foreach (XmlNode xn2 in nodelist2)
                {
                    string xn2Name = xn2.Name;
                    if (xn2Name.Equals(sNode2))
                    {
                        xmlDoc2.RemoveChild(xn2);
                        xn2.RemoveAll();
                        break;
                    }
                }
            }
            xmlDoc.Save(FullFile); //保存
        }
        #endregion


        #region 添加一个节点
        public void addNode2(string FullFile, string sRootName, string sNodel, string addName, string addValue)
        {
            string xn2Name = "";
            int num = 0;
            addName = addName.ToUpper();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(FullFile);//加载文件
            XmlNode xn = xmlDoc.SelectSingleNode(sRootName);
            XmlNodeList xnl = xn.ChildNodes;
            //XmlNodeList nodeList = xmlDoc.SelectSingleNode("CONFIG").ChildNodes;//获取根节点的所有子节点
            foreach (XmlNode xnf in xnl)
            {
                XmlElement xmlDoc2 = (XmlElement)xnf;
                XmlNodeList nodelist2 = xmlDoc2.ChildNodes;
                foreach (XmlNode xn2 in nodelist2)
                {
                    xn2Name = xn2.Name;
                    if (xn2Name.Equals(addName))
                    {
                        num++;
                    }
                }
                if (num == 0)
                {
                    foreach (XmlNode xn2 in nodelist2)
                    {
                        xn2Name = xn2.Name;
                        XmlElement sNode2 = xmlDoc.CreateElement(addName);
                        sNode2.InnerText = addValue;
                        xnf.AppendChild(sNode2);
                        xmlDoc.Save(FullFile); //保存
                        break;
                    }
                }
            }
        }
        #endregion


        #region 改变节点的值
        public void changeNode2(string FullFile, string sRootName, string sNodel, string sNode2, string change)
        {
            sNode2 = sNode2.ToUpper();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(FullFile);//加载文件
            XmlNode xn = xmlDoc.SelectSingleNode(sRootName);
            XmlNodeList xnl = xn.ChildNodes;
            //XmlNodeList nodeList = xmlDoc.SelectSingleNode("CONFIG").ChildNodes;//获取根节点的所有子节点
            foreach (XmlNode xnf in xnl)
            {
                XmlElement xmlDoc2 = (XmlElement)xnf;
                XmlNodeList nodelist2 = xmlDoc2.ChildNodes;
                foreach (XmlNode xn2 in nodelist2)
                {


                    string xn2Name = xn2.Name;
                    if (xn2Name.Equals(sNode2))
                    {
                        xn2.InnerText = change;
                        break;
                    }
                }
            }
            xmlDoc.Save(FullFile); //保存
        }
        #endregion
    }
}
0 0
原创粉丝点击