C# with XML

本文将简单介绍 C# 对XML的 增删改查。
首先还是创建一个C#项目,并设计简单的界面

C# with XML_第1张图片
1.jpg

初始化

private void initButton_Click(object sender, EventArgs e)
        {
            if (File.Exists("demo.xml"))
            {
                //如果存在则 弹出消息框提示
                MessageBox.Show("demo.xml 已经存在!");
            }
            else {
                //构建XmlDocument 对象
                XmlDocument doc = new XmlDocument();
                //声明
                XmlDeclaration declare = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                doc.AppendChild(declare);

                //创建一个根节点(一级)
                XmlElement root = doc.CreateElement("First");
                doc.AppendChild(root);
                //创建节点(二级)
                XmlNode node = doc.CreateElement("Second");
                //创建节点(三级)
                XmlElement element1 = doc.CreateElement("info");
                element1.SetAttribute("ID", "1");
                element1.SetAttribute("Name", "Sam");
                element1.InnerText = "Sam Comment";
                node.AppendChild(element1);

                XmlElement element2 = doc.CreateElement("info");
                element2.SetAttribute("ID", "2");
                element2.SetAttribute("Name", "Round");
                element2.InnerText = "Round Comment";
                node.AppendChild(element2);
                root.AppendChild(node);
                doc.Save("demo.xml");
                //弹出消息框提示初始化完毕
                MessageBox.Show("demo.xml 已经初始化完成!");
            }
        }

初始化按钮是创建一个xml文档,然后存入两条数据
先判断文档demo.xml是否存在,如果不存在,则新建一个xml文档,并创建一级节点 First , 然后在First下再创建二级节点 Second, 接下来 继续创建三级节点 info, 并插入属性 ID , Name 以及相关文本信息。最后保存,显示对话框提示成功。
插入

private void addButton_Click(object sender, EventArgs e)
        {
            if (File.Exists("demo.xml"))
            {
                //如果存在则 读取xml文件
                XmlDocument doc = new XmlDocument();
                doc.Load("demo.xml");

                //先获取到 Second的节点(二级)
                XmlNode node = doc.SelectSingleNode("//Second");
                //变量
                //计算当前有多少childnodes
                int count = node.ChildNodes.Count +1;
                string name = addName.Text;
                string id = count +"";
                string content = addInner.Text;
                //创建节点(三级)
                XmlElement element = doc.CreateElement("info");
                element.SetAttribute("ID", id);
                element.SetAttribute("Name", name);
                element.InnerText = content;
                node.AppendChild(element);

                doc.Save("demo.xml");
                //弹出消息框提示初始化完毕
                MessageBox.Show("添加成功!");

            }
            else{
                //如果存在则 弹出消息框提示
                MessageBox.Show("demo.xml 不存在,请先初始化!");
            }
        }

插入一条info记录,同样先判断是否存在demo.xml,如果存在则找到,则定位到二级节点 Second, 然后在该节点下创建子节点info, 设置属性和文本信息,追加到二级节点Second下, 保存。

插入前

C# with XML_第2张图片
2.jpg

插入后

C# with XML_第3张图片
3.png

查询

private void searchButton_Click(object sender, EventArgs e)
        {
            if (File.Exists("demo.xml"))
            {
                //如果存在则 读取xml文件
                XmlDocument doc = new XmlDocument();
                doc.Load("demo.xml");

                //找到目标地方
                string target = "//info[@Name='" + searchName.Text + "']";
                //获取目标节点
                XmlNode node = doc.SelectSingleNode(target);
                if (node != null)
                {
                    modifyName.Text = node.Attributes[1].Value;
                    modifyContent.Text = node.InnerText;
                }
                else {
                    modifyName.Text = "";
                    modifyContent.Text = "";
                    MessageBox.Show("查无此人!");
                }
                
            }
            else
            {
                //如果存在则 弹出消息框提示
                MessageBox.Show("demo.xml 不存在,请先初始化!");
            }
        }

先确定demo.xml是否存在,找到用户输入的用户名字,定位到目标地方,然后获取节点。判断节点是否为空, 如果不为空则,在右侧修改信息那里将名字和文本信息显示出来。

C# with XML_第4张图片
4.png

修改

private void modifyButton_Click(object sender, EventArgs e)
        {
            if (File.Exists("demo.xml"))
            {
                //如果存在则 读取xml文件
                XmlDocument doc = new XmlDocument();
                doc.Load("demo.xml");

                //找到目标地方
                string target = "//info[@Name='" + searchName.Text + "']";
                //获取目标节点
                XmlNode node = doc.SelectSingleNode(target);
                if (node != null)
                {
                     node.Attributes[1].Value = modifyName.Text ;
                     node.InnerText = modifyContent.Text ;
                     doc.Save("demo.xml");
                     MessageBox.Show("更改完毕!");
                }
                else
                {
                    MessageBox.Show("查无此人!");
                }

            }
            else
            {
                //如果存在则 弹出消息框提示
                MessageBox.Show("demo.xml 不存在,请先初始化!");
            }
        }

通过前面查询到的资料,在输入框内修改名字和文本,点击修改可以更新用户资料。通过定位到用户的名字,对应的节点进行修改。

修改前

C# with XML_第5张图片
5.jpg

修改后

C# with XML_第6张图片
6.png

删除?删除就留给大家练习练习,相信也不难。

本文小例子在vs2012测试通过
testXML.zip

你可能感兴趣的:(C# with XML)