首页 > C#用XmlDocument操作XML

C#用XmlDocument操作XML

1.加载xml文件

   string xmlPath = AppDomain.CurrentDomain.BaseDirectory+"xml/test.xml";

   XmlDocument xmlDoc = new XmlDocument();

   xmlDoc.Load(xmlPath);//这里是xml文件的路径

   string xmlString="test";

   xmlDoc.LoadXml(xmlString);//这里是加载一段XML字符串并将它转换为xml

2、用xpath来查询节点

    XmlNodeList nodeList = xmlDoc.SelectNodes("/bookstore/book/title");//查询节点集

    XmlNodeList node = xmlDoc.SelectSingleNode("/bookstore/book/title[@speciality='computer']");//根据属性查询单个节点

3、遍历节点集

    foreach (XmlNode node in nodeList)

4、给某个节点添加新的属性

    XmlAttribute attr = xmlDoc.CreateAttribute("specialty");

    attr.Value = "computer";

    node.Attributes.Append(attr);

5、删除某个节点的某个属性,当然也可以根据属性的下标来删除(这里就不举例了)

     XmlNode node = xmlDoc.SelectSingleNode("/bookstore/book[@ISBN='1-861003-11-0']/title");

            XmlAttribute attr = node.Attributes["specialty"];

            if (attr.Value == "computer1")

            {

                node.Attributes.Remove(attr);

            }

6、修改某个节点的value值,但节点的tag名称是不能修改的,只能先删除再添加

      node.Attributes["specialty"].Value="xiaochun";

7、添加节点

    XmlElement element = xmlDoc.CreateElement("book");

            element.InnerXml = "create element";

            XmlNode node = xmlDoc.SelectSingleNode("/bookstore");

            node.AppendChild(element);

8、修改节点就是先查询到某个节点,然后再将他的属性再设置一次就行了(这里就不举例了)

9、删除节点

     XmlNodeList nodeList = xmlDoc.SelectNodes("/bookstore/book");

            foreach (XmlNode node in nodeList)

            {

                if (node.Attributes.Count == 0)//这里表示没有属性的节点

                {

                    xmlDoc.SelectSingleNode("/bookstore").RemoveChild(node);

                }

            }

10、保存xml文档

     xmlDoc.Save(xmlPath);

11、创建一个完整的XML文档

      XmlDocument xmlDoc = new XmlDocument();

            XmlDeclaration declare = xmlDoc.CreateXmlDeclaration("1.0","gb2312",null);

            xmlDoc.AppendChild(declare);



            XmlElement root = xmlDoc.CreateElement("books");

            xmlDoc.AppendChild(root);



            XmlElement bookElement = xmlDoc.CreateElement("book");

            bookElement.InnerXml = "javascript";

            xmlDoc.SelectSingleNode("/books").AppendChild(bookElement);



            XmlElement bookElement2 = xmlDoc.CreateElement("book");

            bookElement.InnerXml = "xml";

            XmlAttribute attr = xmlDoc.CreateAttribute("title");

            attr.Value = "test";

            bookElement2.Attributes.Append(attr);

            xmlDoc.SelectSingleNode("/books").AppendChild(bookElement2);



            xmlDoc.Save(AppDomain.CurrentDomain.BaseDirectory+"/xml/test2.xml");

转载于:https://www.cnblogs.com/msql/archive/2012/11/30/2796235.html

更多相关:

  • 当一个IT组织开始走到需要实施网络边缘的旅程时,他们很快意识到面对的挑战与他们在传统数据中心内所经历的挑战不同。 第一个挑战是空间。与更大的核心或区域数据中心同类产品相比,许多边缘站点的物理尺寸更小,因此,需要仔细计划好,尝试在未为其专门设计的空间中安装硬件。  第二个挑战是运行环境。还必须解决的可能面对的冷热温度变化 ,天气,无...

  • 单向循环链表单链表的一个变形是单向循环链表, 链表的最后一个节点的next域不再为None, 而是指向链表的头节点.单向循环链表如图所示:单向循环链表同样单向循环链表也是要使用python来对它的基本功能进行一个封装. 总体大致的功能如下:is_empty() 判断链表是否为空length() 返回链表的长度travel() 遍历ad...

  • 题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一...

  • 题目:删除链表的节点 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为...

  • 【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真 一、模型制作 1.实际模型制作 2.Solidworks模型制作 二、Solidworks文件转urdf 1.sw_urdf_exporter插件 2.添加坐标系和转轴 3.导出urdf文件 三、rivz仿真...

  • ========插入操作========= ====插入单个属性=====--为第一个book节点插入属性name值为"直接插入"set @data.modify('insert (attribute name {"直接插入"})into (/bookstore/book)[1]')/*output:

  • 转自https://github.com/SXHSine/Mitsuba-Usage-with-Python27 # -*- coding: UTF-8 -*- import os import sys # NOTE: remember to specify paths using FORWARD slashes (i.e. '/'...

  • xml的格式如下,就是通过<>节点来区别数据结构的: 22008141100

    .NET调用JAVA的WebService方法

      调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料,但是都整理的不够清晰明了。根据网上的资料,个人也对各种方法进行了尝试,费了不少精力,为此特将自己的解决方法进行总结一下,以备以后需要...

  •  FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.         一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH...

  • 导读:在前面介绍了很多关于XML和HTML的东西,他们其实各有各的好处,在很多时候都需要结合起来使用。现在已经有XML和HTML结合的产物:XHTML(可扩展超文本标记语言)。在本篇博客中,则主要介绍通过引入命名空间的方法,进行XML和HTML混合使用的例子。 一、在XML中使用HTML 1.1,代码

    -->