• 对Xml文档进行操作(修改,删除)


    <?xml version="1.0" encoding="utf-8"?>
    <Products>
      <Product id="0" proName="aa1" proPrice="12" proInfo="bb">
      </Product>
      <Product id="1" proName="电脑" proPrice="3200" proInfo="电脑电脑电脑电脑电脑电脑">
      </Product>
      <Product id="2" proName="mp4" proPrice="400" proInfo="mp4mp4mp4mp4mp4mp4mp4mp4mp4">
      </Product>
      <Product id="3" proName="mp4" proPrice="400" proInfo="mp4mp4mp4mp4mp4mp4mp4mp4mp4">
      </Product>
      <Product id="4" proName="mp5" proPrice="500" proInfo="mp5mp5mp5mp5mp5mp5mp5mp5mp5">
      </Product>
    </Products>

    下面我们来看看如何对上面的xml文档进行删除和修改的操作:

    其实很简单,大概也是分一下几个步骤:

    1、将xml文档加载到内存中

    2、找到要删除的节点(根据条件)

    3、重新保存加载xml文档

    根绝代码具体来看看如何操作

    修改:

      protected void Button2_Click(object sender, EventArgs e)
        {
            XmlDocument xmldocument = new XmlDocument();
            string path = Server.MapPath("~/Product.xml");
            xmldocument.Load(path);
            string xmlPath = "//Products//Product";

            //根据路径找到所有节点
            XmlNodeList nodeList = xmldocument.SelectNodes(xmlPath);

           //循环遍历这些子
            foreach (XmlNode node in nodeList)
            {

                 //根据节点的某个属性找到要操作的节点
                if(node.Attributes["id"].Value=="4")
                {

                    //对节点进行修改操作
                    node.Attributes["proName"].Value = "aa1";
                    node.Attributes["proPrice"].Value = "12";
                    node.Attributes["proInfo"].Value = "bb";
                }
               
            }

            //重新加载保存
            xmldocument.Save(path);
        }

    上面是对xml进行的修改的操作,删除基本和它差不多

    删除

       protected void Button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            string path = Server.MapPath("~/Product.xml");
            doc.Load(path);
            XmlNodeList xmlNodeList = doc.SelectNodes("//Products//Product");
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                if(xmlNode.Attributes["id"].Value=="4")
                {

                   //找到父节点,从父节点删除该节点
                    xmlNode.ParentNode.RemoveChild(xmlNode);
                }
            }
            doc.Save(path);
        }

    当然了,也可以删除通过RomoveAllAttributes,RemoveAttribute或RemoveAttributeAt等来删除属性

    前端时间,在一本项目教材书上,看到他们对Xml文档处理的时候,在查找节点的时候用的是索引

    XmlNode xmlNode = doc.SelectSingleNode("//Products//Product[5]");

    本人认为这种方法不可取,我们一般都会让你一个id对应一个节点,如果采取这种方式,那么很可能无法找到需要的节点,造成程序方面的错误,这是本人的一些见解,大家有什么意见可以提出来,共同学习!

    多思考,多创新,才是正道!
  • 相关阅读:
    protobuf使用遇到的坑
    嵌入式开发入门心得记录
    vim编辑模式下黑色背景,下来过程中出现白条的问题
    linux中awk的应用
    ntp时间同步
    mysql5.5适配
    centos 安装 epel
    ubuntu jdk安装
    add_header Access-Control-Allow-Origin $http_Origin always;
    111
  • 原文地址:https://www.cnblogs.com/shuang121/p/1967799.html
Copyright © 2020-2023  润新知