XML——XML操作

操作XML文件需要引用命名空间:System.Xml;

  1. 向Xml文件中添加信息

添加Student.xml文件,文件信息如下:

<?xml version="1.0" encoding="utf-8"?>

<Students>

  <Student class="一班">

    <Name>张三</Name>

    <Gender>男</Gender>

    <Age>19</Age>

  </Student>

  <Student class="二班">

    <Name>李四</Name>

    <Gedner>女</Gedner>

    <Age>20</Age>

  </Student>

  <Student class="一班">

    <Name>had</Name>

    <Gender>女</Gender>

    <Age>16</Age>

  </Student>

</Students>

代码:

  XmlDocument doc = new XmlDocument();

            //修改.exe文件夹下的Student.xml,需要单机程序中的Student.xml文件将其“复制到输出目录”属性,修改为“始终复制”

            //string exePath = Application.StartupPath+"\\Student.xml";

            //doc.Load(exePath);

            //将程序目录下的Student.Xml中添加学生信息。

            String exePath = Application.StartupPath;

            int idx = exePath.LastIndexOf("bin");

            exePath = exePath.Substring(0, idx) + "Student.xml";

            doc.Load(exePath);

            XmlNode node = doc.CreateNode(XmlNodeType.Element, "Student", "");

            XmlAttribute attr = doc.CreateAttribute("class");

            attr.Value = "一班";

            node.Attributes.Append(attr);

            XmlNode name = doc.CreateNode(XmlNodeType.Element, "Name","");

            name.InnerText = "had";

            XmlNode gender = doc.CreateNode(XmlNodeType.Element, "Gender", "");

            gender.InnerText = "女";

            XmlNode age = doc.CreateNode(XmlNodeType.Element, "Age", "");

            age.InnerText = "16";

            node.AppendChild(name);

            node.AppendChild(gender);

            node.AppendChild(age);

            doc["Students"].AppendChild(node);

            doc.Save(exePath);    

  1. 删除Xml文件中的数据

     XmlDocument doc = new XmlDocument();

            //修改.exe文件夹下的Student.xml,需要单机程序中的Student.xml文件将其“复制到输出目录”属性,修改为“始终复制”

            //string exePath = Application.StartupPath+"\\Student.xml";

            //doc.Load(exePath);

            //将程序目录下的Student.Xml中添加学生信息。

            String exePath = Application.StartupPath;

            int idx = exePath.LastIndexOf("bin");

            exePath = exePath.Substring(0, idx) + "Student.xml";

            doc.Load(exePath);

            XmlNodeList list = doc["Students"].ChildNodes;

            foreach (XmlNode node in list)

            {

                foreach (XmlNode nd in node.ChildNodes)

                {

                    if (nd.InnerText == "had")

                    {

                        nd.ParentNode.ParentNode.RemoveChild(nd.ParentNode);

                        doc.Save(exePath);

                        return;

                    }

                }

            } 

  1. 修改xml中的数据:

XmlDocument doc = new XmlDocument();

            //修改.exe文件夹下的Student.xml,需要单机程序中的Student.xml文件将其“复制到输出目录”属性,修改为“始终复制”

            //string exePath = Application.StartupPath+"\\Student.xml";

            //doc.Load(exePath);

            //将程序目录下的Student.Xml中添加学生信息。

            String exePath = Application.StartupPath;

            int idx = exePath.LastIndexOf("bin");

            exePath = exePath.Substring(0, idx) + "Student.xml";

            doc.Load(exePath);

            XmlNodeList list = doc["Students"].ChildNodes;

            for (int i = 0; i < list.Count; i++)

            {

                XmlNode node = list[i];

                if (node["Name"].InnerText == "李四")

                {

                    node["Gender"].InnerText = "男";

                }

                foreach (XmlNode nd in node.ChildNodes)

                {

                    if (nd.InnerText == "张三")

                    {

                        nd.ParentNode["Gender"].InnerText = "女";                       

                    }

                }

               

            }

            doc.Save(exePath);

  1. 读取xml文件的所有数据

XmlDocument doc = new XmlDocument();

            //修改.exe文件夹下的Student.xml,需要单机程序中的Student.xml文件将其“复制到输出目录”属性,修改为“始终复制”

            //string exePath = Application.StartupPath+"\\Student.xml";

            //doc.Load(exePath);

            //将程序目录下的Student.Xml中添加学生信息。

            String exePath = Application.StartupPath;

            int idx = exePath.LastIndexOf("bin");

            exePath = exePath.Substring(0, idx) + "Student.xml";

            doc.Load(exePath);

            XmlNodeList list = doc["Students"].ChildNodes;

            foreach (XmlNode node in list)

            {

                String name = node["Name"].InnerText;

                string gender = node["Gender"].InnerText;

                string age = node["Age"].InnerText;

                listBox1.Items.Add(name + "," + age + "," + gender);

            }  

  1. 创建Xml文件,并向里面添加数据

  private void button1_Click(object sender, EventArgs e)

        {

            CreateXmlFile();

        }

        public void CreateXmlFile()

        {

            String exePath = Application.StartupPath;

            int idx = exePath.LastIndexOf("bin");

            exePath = exePath.Substring(0, idx) + "aa.xml";

            XmlDocument xmlDoc = new XmlDocument();

            //创建类型声明节点 

            XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");

            xmlDoc.AppendChild(node);

            //创建根节点 

            XmlNode root = xmlDoc.CreateElement("User");

            xmlDoc.AppendChild(root);

            CreateNode(xmlDoc, root, "name", "xuwei");

            CreateNode(xmlDoc, root, "sex", "male");

            CreateNode(xmlDoc, root, "age", "25");           

            xmlDoc.Save(exePath);        

        }

        /// <summary>   

        /// 创建节点   

        /// </summary>   

        /// <param name="xmldoc"></param>  xml文档 

        /// <param name="parentnode"></param>父节点   

        /// <param name="name"></param>  节点名 

        /// <param name="value"></param>  节点值 

        ///  

        public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value)

        {

            XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);

            node.InnerText = value;

            parentNode.AppendChild(node);

        } 

发布了60 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/105593826
xml