对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对应一个节点,如果采取这种方式,那么很可能无法找到需要的节点,造成程序方面的错误,这是本人的一些见解,大家有什么意见可以提出来,共同学习!

转载于:https://www.cnblogs.com/shuang121/archive/2011/03/01/1967799.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取真实IP

真正的取真实IP地址及利弊(转自百度空间)目前网上流行的所谓“取真实IP地址”的方法&#xff0c;都有bug&#xff0c;没有考虑到多层透明代理的情况。 多数代码类似&#xff1a; string IpAddress (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR&q…

Java 中的位运算

移位运算符 包括&#xff1a; “>> 右移”&#xff1b;“<< 左移”&#xff1b;“>>> 无符号右移” 例子&#xff1a;-5>>3-11111 1111 1111 1111 1111 1111 1111 10111111 1111 1111 1111 1111 1111 1111 1111其结果与 Math.floor((double)-5/(…

[转]C++中的三种继承public,protected,private

链接&#xff1a;http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html

软件开发七宗罪

导读&#xff1a;一起来看看世界各地的程序员们所共有的致命通病&#xff0c;从软件开发的地狱中拯救自己。这七宗罪你有几条&#xff1f; 想成为一名优秀的软件开发人员需要很长时间的培训和实践。但是如果不遵循合适的原则&#xff0c;即便是再好的程序员也会成为失败的牺牲品…

Spring Boot:快速入门教程

什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。简而言之&#xff0c;Spring Boot通过提供默认配…

loadruner11 socket脚本-10053错误

背景: socket 10053异常&#xff1a;软件主动放弃一个连接&#xff0c;原因是超时或协议错误。如果LR客户端报10053异常&#xff0c;说明LR在执行套接字操作时&#xff0c;发生通信超时、网络中断或其它异常&#xff0c;主动将Socket连接断开。也就是说&#xff1a;10053异常是…

万网独享主机Apache为Ecshop商城添加404页面详解

在博客园基本都是做看客的角色&#xff0c;自己基本都没写过文章&#xff0c;不过昨天的经历确实让我有想法了&#xff0c;因为在网络上面看了很多文章&#xff0c;每篇写的都相对较片面&#xff0c;对于我这个Linux新手来说不免有点分不清东南西北&#xff0c;一不小心就浪费了…

移动微技(Mobile Widget)应用开发权威指南

移动微技&#xff08;Mobile Widget&#xff09;应用开发权威指南 基本信息 作者&#xff1a; 程宝平 杨晓华 朱春梅 丛书名&#xff1a; 中国移动创新系列丛书 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121104527 上架时间&#xff1a;2010-4-19 出版日…

[转载]Informix Dynamic Server维护手册

转载于:https://www.cnblogs.com/zgqjymx/archive/2011/03/06/1972733.html

Java反编译器Java Decompiler

Java Decompiler不仅为Windows、Linux、OSX系统提供GUI程序JD-GUI&#xff0c;而且还提供了Eclipse插件JD-Eclipse&#xff0c;官方网站&#xff1a;http://java.decompiler.free.fr/转载于:https://www.cnblogs.com/heroking2000/archive/2009/10/12/1582120.html

alternatives命令使用方法

alternatives命令使用方法 alternatives是Linux下的一个功能强大的命令。仅仅能在root权限下运行。如系统中有几个命令功能十分相似&#xff0c;却又不能任意删除&#xff0c;那么能够用 alternatives 来指定一个全局的设置。alternatives经常使用于同一个系统中安装同一软件的…

linux下挂接fat32分区

作者: Eulogize 出自: http://www.linuxdiyf.com Coolinux 在/mnt 下新建一个文件夹&#xff0c;命名可以随意&#xff0c;如D等。然落伍入终端输出上面的饬令#mount -t vfat -o codepage936 iocharsetgb2312 /hdv/hdX /mnt/dX在LINUX下的实体名&#xff0c;如Chda1版权声明…

Apache、Nginx、Tomcat的区别

Apache、Nginx、Tomcat的区别NginxTomcatApache&#xff0c;Nginx与Tomcat的区别Nginx -----是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理服务器。** Tomcat -----servlet(jsp)应用服务器 Tomcat是运行在JVM中的一个进程。它定义为“中间件”…

python中通过元类(TYPE)简单实现对象关系映射(ORM)

ORM是创建一个实例对象&#xff0c;用创建他的类名当做数据表名&#xff0c;用创建他的类属性对应数据表的字段&#xff0c;不需要在自己写复杂的sql语句&#xff0c;而是通过对实例对象的操作时&#xff0c;能让代码自动帮我们整理为对应的sql语句。 class User(父类):uid (&…

ORA-12519: TNS:no appropriate service handler found 解决

selectcount(*) fromv$process --当前的连接数selectvalue fromv$parameter wherename processes--数据库允许的最大连接数修改最大连接数:altersystem setprocesses 300scope spfile;重启数据库:shutdownimmediate;startup;--查看当前有哪些用户正在使用数据SELECTosuser, a.u…

Linux下Web效力器架设攻略-1

来日诰日我们来看看怎样将Web效力器架在Linux零碎下。    LINUX零碎中罕见的有&#xff1a;CERN、NCSA、Apache三种体式格式&#xff0c;浅显最常用的要领就是用Apache。此种体式格式特点分明&#xff0c;设置装备部署简明&#xff0c;具有最大的对零碎兼容性&#xff0c;以…

Codeforces 1188A 构造

题意&#xff1a;给你一颗树&#xff0c;树的边权都是偶数&#xff0c;并且边权各不相同。你可以选择树的两个叶子结点&#xff0c;并且把两个叶子结点之间的路径加上一个值&#xff08;可以为负数&#xff09;&#xff0c;问是否可以通过这种操作构造出这颗树&#xff1f;如果…

iOS- 关于AVAudioSession的使用——后台播放音乐

1.前言   •AVAudioSession是一个单例&#xff0c;无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用•针对不同的音频应用场景&#xff0c;需要设置不同的音频会话分类1.1AVAudioSession的类别   •AVAudioSessionCategoryAmbient–混音播放&…

检索

【摘抄】基于线性表的检索一、检索的基本概念和算法分类1、检索概念&#xff1a; 可以形式化地定义基于关键码的检索。假定k1、k2…kn是互不相同的关键码值&#xff0c;有一个包含n条记录的集合C&#xff0c;形式如下&#xff1a; (k1, R1)&#xff0c;(k2, R2)&#xff0c;…

ajax请求后无法实现指定页面跳转或带参数跳转

问题&#xff1a;我们通过Ajax在前端对Controller的接口进行请求&#xff0c;处理完成后&#xff0c;无法通过Controller的return方法返回指定的页面。 原因&#xff1a;ajax只是局部刷新&#xff0c;所以不能在后台接口直接进行页面的跳转&#xff0c;我们可以在ajax的succes…