我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!

时间:2022-03-19 01:54:10

我把我写的四种方法代码贴上来吧,照着写没啥问题。

  注:

    <bookstore>
      <book>
        <Id>1</Id>
        <tate>2010-10-10</tate>
        <txt>123</txt>
        <yy>2015</yy>
        <dd>23</dd>
      </book>
    </bookstore>

  这是xml文件的目录结构。

    首先开始xml读取数据:

      XmlDocument doc = new XmlDocument();  //声明一个xml文件对象

       doc.Load(@"..\..\sb.xml");          //获取xml文件路径

       XmlNode xn = doc.SelectSingleNode("bookstore");  //获取xml文件根节点

       XmlNodeList xnl = xn.ChildNodes;          //获取子节点

      //循环子节点获取值
      foreach (XmlNode xn1 in xnl)
       {

        //声明一个对象,这个对象就是xml文件目录下的节点,声明一个对象用来接收xml文件数据
        Info i = new Info();
        // 将节点转换为元素,便于得到节点的属性值
        XmlElement xe = (XmlElement)xn1;
        // 得到Type和ISBN两个属性的属性值

        // 得到Book节点的所有子节点
        XmlNodeList xnl0 = xe.ChildNodes;

        //获取数据并且保存到list集合中(list集合是泛型集合)
        i.ID = xnl0.Item(0).InnerText;
        i.date = xnl0.Item(1).InnerText;
        i.txt = xnl0.Item(2).InnerText;
        i.yy = xnl0.Item(3).InnerText;
        i.dd = xnl0.Item(4).InnerText;
        list.Add(i);
        }

    添加xml数据:

      //声明一个要添加的xml数据对象  

      Info i = new Info();
      i.date = DateTime.Now.ToString();
      i.txt = txts.Text;
      i.yy = DateTime.Now.ToString();
      i.dd = DateTime.Now.ToString();
      i.ID = (list.Count + 1).ToString();

      声明一个xml对象
      XmlDocument doc = new XmlDocument();

      //获取xml文件路径

      doc.Load(@"..\..\sb.xml");

      //获取根节点

      XmlNode root = doc.SelectSingleNode("bookstore");

      //创建子节点

      XmlElement xelKey = doc.CreateElement("book");    

      //为子节点创建子节点
      XmlElement xmlid = doc.CreateElement("Id");
      xmlid.InnerText = i.ID;
      xelKey.AppendChild(xmlid);
      XmlElement xmldate = doc.CreateElement("date");
      xmldate.InnerText = i.date;
      //添加当前时间
      xelKey.AppendChild(xmldate);
      //创建文本节点
      XmlElement xmltxt = doc.CreateElement("txt");
      xmltxt.InnerText = i.txt;
      //添加当前文本框
      xelKey.AppendChild(xmltxt);

      //创建文本节点
      XmlElement xmlyy = doc.CreateElement("yy");
      xmlyy.InnerText = i.yy;
      //添加当前文本框
      xelKey.AppendChild(xmlyy);
      //创建文本节点
      XmlElement xmltdd = doc.CreateElement("dd");
      xmltdd.InnerText = i.dd;
      //添加当前文本框
      xelKey.AppendChild(xmltdd);

      //在根节点上添加子节点
      root.AppendChild(xelKey);
      //保存添加的数据(对xml文件进行增删改操作后,必须执行这个方法)
      doc.Save(@"..\..\sb.xml");

    修改xml数据:

      int  id ; //这是一个标示值,指在循环时,根据这个标示值来匹配修改的是哪一个节点

      txtUP.Text  //当前要修改数据的文本框值

      //声明一个xml对象

      XmlDocument xmlDoc = new XmlDocument();

      //获取xml路径
      xmlDoc.Load(@"..\..\sb.xml");

      //获取xml文件根节点
      XmlNode xns = xmlDoc.SelectSingleNode("bookstore");

      //获取子节点
      XmlNodeList xnl = xns.ChildNodes;

      //循环子节点
      foreach (XmlNode xn in xnl)
       {
        XmlElement xe = (XmlElement)xn;//将节点转换一下类型
       

        if (xe["Id"].InnerText == id)//判断该子节点是否是要查找的节点
          {

           //循环节点对象    

            foreach (XmlNode item in xe.ChildNodes)
              {
                if (item.Name == "txt")
                  {
                  item.InnerText = txtUP.Text;
                  xmlDoc.Save(@"..\..\sb.xml");//再一次强调 ,一定要记得保存的该XML文件
                  break;
                  }
                }

          }
        //若是当前节点下还有子节点如下操作
        //XmlNodeList xnl2 = xn.ChildNodes;//取出该子节点下面的所有元素
        //foreach (XmlNode xn2 in xnl2)
          //{
            // XmlElement xe2 = (XmlElement)xn2;//转换类型
            // if (xe2.Name == "price")//判断是否是要查找的元素
            // {
              //这里你就可以进行操作,是喜欢查找子节点还是在当前节点进行操作
            // }
          //}
          
        }
        xmlDoc.Save(@"..\..\sb.xml");////保存添加的数据(对xml文件进行增删改操作后,必须执行这个方法)

    删除xml节点包括数据:

      int id;  //标识值,用于判断删除那条数据  

      //声明一个xml对象
      XmlDocument xmldoc = new XmlDocument();
      //打开一个xml文件
      xmldoc.Load(@"..\..\sb.xml");
      //获取根节点
      XmlNode xnRoot = xmldoc.SelectSingleNode("bookstore");
      //获取根节点下的子节点
      XmlNodeList nodelist = xnRoot.ChildNodes;
      //循环所有子节点
      foreach (XmlNode node in nodelist)
       {
        //判断子节点的值是否为当前选中的那一项
        if (node.SelectSingleNode("Id").InnerXml == id)
         {
          //是的话则进行删除该节点
          xnRoot.RemoveChild(node);
          //保存xml文件操作
          xmldoc.Save(@"..\..\sb.xml");
         }
       }

    以上是我对xml文件的增删改查操作,若是好的建议或者代码有什么问题的,可以留言,我会参考你的意见的。

   

我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!的更多相关文章

  1. 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照&colon;对数据进行增删改查)

    我们常常会用到通过图书的名称来查询图书那么这种话我们也就会使用到从数据库中搜索出数据而且载入到自己的Jsp页面中 这种话我们须要将从数据库中获取到的数据放进响应中然后通过%=request.getAt ...

  2. Golang中map的三种声明方式和简单实现增删改查

    package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...

  3. flask中 多对多的关系 主从表之间的的增删改查

    # 角色表模型class Role(db.Model): r_id = db.Column(db.Integer, primary_key=True) r_name = db.Column(db.St ...

  4. C&num;在winform中操作数据库,实现数据增删改查

    1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本 ...

  5. 中阶d03&period;3 JDBC&lowbar;CURD&lowbar;Util --- 使用 junit执行单元测试(增删改查)

    1.单元测试环境准备 https://www.cnblogs.com/longesang/p/11399010.html 2.测试 3.结果返回 4.代码 新建一个test目录统一存放测试案例 查: ...

  6. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

  7. C&num;窗体中读取修改xml文件

    由于之前没有操作过xml文件,尤其是在窗体中操作xml,脑子一直转不动,而且很抵制去做这个功能,终于还是突破了自己通过查询资料完成了这个功能,在此记录一下自己的成果. 功能说明:程序中存在的xml文件 ...

  8. winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

  9. Winform&lpar;DataGridView&rpar;控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

随机推荐

  1. Js制作的文字游戏

    自己制作的文字游戏.(: <!DOCTYPE html><html lang="en"><head>    <meta charset=& ...

  2. MakeFile中赋值

    Makefile 中:= ?= += =的区别   在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为 ...

  3. gc 辅助打印信息

    cat xx.xml|grep GC <jvm-arg>-XX:+PrintGCDetails</jvm-arg> <jvm-arg>-XX:+PrintGCDat ...

  4. SQL2008转SQL2005数据库经验

    1.用SQL2008创建兼容2005的结构脚本. 2.在2005中生成数据库结构. 3.利用2005中的数据导入直接从源数据库中导入数据,此处注意自增长标识的选项需要添加,多表优化选项可以去掉,这里不 ...

  5. 手机自动化测试:Appium源码分析之跟踪代码分析九

    手机自动化测试:Appium源码分析之跟踪代码分析九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家 ...

  6. github如何添加ssh

    1.运行git Bash 输入如下命令: $ cd ~/.ssh $ ls 输入这2个命令 ,我们可以看到 id_rsa.pub 或 id_dsa.pub 这2个文件已经存在了,id_rsa 是私钥, ...

  7. day8、 显示Linux路由表、各列信息

    要用到的命令是 route route 命令    显示和设置Linux路由表 -A:设置地址类型: -C:打印将Linux核心的路由缓存: -v:详细信息模式: -n:不执行DNS反向查找,直接显示 ...

  8. fiddler2请求参数乱码

    win7 1.windows按钮+R 2.输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Microsoft\Fiddler2 4.右键新建,选字符串值 加上 ...

  9. Unity LayerMask 的位运算

    Unity的Layer Unity是用 int32来表示32个Layer层,int32用二进制来表示一共有32位. 0000 0000 0000 0000 0000 0000 0000 0000 31 ...

  10. jquery下的正反选操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...