美文网首页
C# with XML

C# with XML

作者: 2010jing | 来源:发表于2016-06-14 20:02 被阅读70次

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

    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下, 保存。

    插入前

    2.jpg

    插入后

    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是否存在,找到用户输入的用户名字,定位到目标地方,然后获取节点。判断节点是否为空, 如果不为空则,在右侧修改信息那里将名字和文本信息显示出来。

    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 不存在,请先初始化!");
                }
            }
    

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

    修改前

    5.jpg

    修改后

    6.png

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

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

    相关文章

      网友评论

          本文标题:C# with XML

          本文链接:https://www.haomeiwen.com/subject/pwpudttx.html