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

摘要:
˂? xmlversion=“1.0”encoding=“utf-8”?

<?xml version="1.0" encoding="utf-8"?>
<Products>
  <Product proName="aa1" proPrice="12" proInfo="bb">
  </Product>
  <Product proName="电脑" proPrice="3200" proInfo="电脑电脑电脑电脑电脑电脑">
  </Product>
  <Product proName="mp4" proPrice="400" proInfo="mp4mp4mp4mp4mp4mp4mp4mp4mp4">
  </Product>
  <Product proName="mp4" proPrice="400" proInfo="mp4mp4mp4mp4mp4mp4mp4mp4mp4">
  </Product>
  <Product 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对应一个节点,如果采取这种方式,那么很可能无法找到需要的节点,造成程序方面的错误,这是本人的一些见解,大家有什么意见可以提出来,共同学习!

免责声明:文章转载自《对Xml文档进行操作(修改,删除)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇apache转发规则 + nginx location 正则匹配经典案例ASP.NET MVC5 学习笔记-1 控制器、路由、返回类型、选择器、过滤器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

U盘或光盘启动的Win7-8-10的PE系统制作步骤

U盘或光盘启动的Win7-8-10的PE系统制作步骤 1、打开http://www.ushendu.com/下载PE制作工具   2、下载完成后安装到我的电脑, 把准备好的U盘插到电脑上,打开U深度PE制作工具,点击开始制作等待制作完成。   3、  把制作好的PE插到电脑上开机按F12选择USB启动。 4、进到PE界面下,把系统盘放入电脑中,打开win...

手机投屏到电脑教程,高清、高帧率、无延时投屏

手机投屏到电脑的方法有很多,今天讨论一下高清、高帧率、无延时投屏,可以用于游戏演示,直播等等。 一般投屏大致可以分为三类: 1. 通过互联网的数据传输,效率低,基本不考虑,几乎是一帧一帧传。 2. 通过WiFi投屏,基本能实现高清,但是考量到网络速度和复杂的网络环境,其实并不好用,可以用来演示文档,但是像是游戏、直播这种就不适用。 只要方法: a. 第三方...

花瓶安装和使用

1. Charles安装 官网下载安装Charles:https://www.charlesproxy.com/download/ 2. mac安装包和破解jar包 链接:https://pan.baidu.com/s/1UOCSX2EjFGlc8ojqjvMwWg  密码:ccsj mac安装后破解 把charles.jar 复制进去替换即可 3.安...

对xml文档数据的读取

在短暂的C#程序开发过程中,我发现使用xml文档来存储一些数据还是很不错的!当然有了数据当然要读取,在开发过程我遇到了两种对xml文档数据进行读取的方法。 就是最基本的利用System.Xml命名空间,通过各个节点来获得xml中的数据。 例如下面的Xml数据: <?xml version="1.0"?> <BookStore>...

XML Serializable Generic Dictionary

.net 2.0 泛型Dictionary不支持 XML serializable. 下面是一个实现IXmlSerializable 接口实现支持Serialize的泛型集合.Dictionary。 Dictionary<TKey, TValue>本身实现了ISerializable接口,WebService中无法实现序列化,具体是什么原因它不...

Appium+Python+雷电模拟器自动化测试

(一)环境配置 1.安装Appium 官方网站地址:http://appium.io/ 2.安装Android SDK 网址:https://developer.android.google.cn/studio?hl=zh-cn     删除bin文件下的adb.exe和nox_adb.exe,再拷贝android sdk/platform-tools/b...