C# 关于XML遍历新增节点,修改属性小例

简介: XML样例: <?xml version="1.0" encoding="gb2312"?><bookstore> <book genre="李2红" ISBN="2-3631-4"> <title>CS从入门到精通</title> <author>候捷</author>
XML样例:
 
  

<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="李2红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>58.3</price>
  </book>
  <book genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>小六</author>
    <price>58.3</price>
  </book>
  <book45 genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>大黄</author>
    <price>58.3</price>
  </book45>
</bookstore>

测试代码:
	    XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("E:\\bookstore.xml");
	    //获取bookstore节点的所有子节点
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes;
            for (int i = 0; i < nodeList.Count; i++)//遍历每个book节点
            {   //将子节点类型转换为XmlElement类型
                XmlElement xe = (XmlElement)nodeList.Item(i);
                if (xe.Name == "book")
                {   //如果genre属性值为“李赞红”
                    if (xe.GetAttribute("genre") == "李赞红")
                    {    //继续获取xe子节点的所有子节点
                        XmlNodeList nls = xe.ChildNodes;
                        for (int j = 0; j < nls.Count; j++)
                        {
                            XmlElement xe2 = (XmlElement)nls.Item(j);//转换类型
                            //title、author、price都会在xe2.Name中取到
                            if (xe2.Name == "author")//如果找到
                            {
                                xe2.InnerText = "Karli Waston";//则修改
                            }
                            else //如果不存在则新建
                            {
                                xe2.SetAttribute("NewAttribute", "新增属性");
                            }
                        }
                    }
                    else
                    {
                        //如果genre属性值不为“李赞红”,则修改为李赞红
                        xe.SetAttribute("genre", "李赞红");
                    }
                }
                else //如果不存在book节点,则在该节点下新增一个book下级节点
                {
                    XmlElement subElement = xmlDoc.CreateElement("因为这个节点不是book");
                    subElement.InnerXml = "BigDog";
                    xe.AppendChild(subElement);
                }
            }
            xmlDoc.Save("E:\\bookstore.xml");//保存。
修改后的XML:
 
  

<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>58.3</price>
  </book>
  <book genre="李赞红" ISBN="2-3631-4">
    <title NewAttribute="新增属性">CS从入门到精通</title>
    <author>Karli Waston</author>
    <price NewAttribute="新增属性">58.3</price>
  </book>
  <book45 genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>大黄</author>
    <price>58.3</price>
    <因为这个节点不是book>BigDog</因为这个节点不是book>
  </book45>
</bookstore>
如果现在根节点下新增某个节点,代码如下:

 
  

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("E:\\bookstore.xml");
XmlNode root = xmlDoc.DocumentElement;
XmlElement subElement = xmlDoc.CreateElement("根节点下新增");
subElement.InnerXml = "BigDog";
root.AppendChild(subElement);



目录
相关文章
|
1月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
11 0
|
7天前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
15 1
|
17天前
|
XML JavaScript 前端开发
XML文档节点导航与选择指南
XPath是XSLT的核心部分,用于XML文档的节点定位和选择。它采用路径表达式语法,包含200多个内置函数处理各种数据类型。XPath在编程语言如JavaScript中广泛使用,与XSLT配合进行XML转换和样式处理。它涉及7种节点类型,如元素、属性和文本,以及多种节点间关系,如父、子、同级等。XPath还使用轴(如ancestor、child)来描述节点间的关联,并支持运算符进行逻辑和数学操作。
27 0
XML文档节点导航与选择指南
|
1月前
|
C#
C#学习相关系列之自定义遍历器
C#学习相关系列之自定义遍历器
|
1月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
174 2
|
3月前
|
XML C# 数据格式
c# 追加 数据至xml文件
c# 追加 数据至xml文件
18 0
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
4月前
|
XML C# 图形学
【Unity 3D】C#从XML中写入、读取、修改数据(附源码)
【Unity 3D】C#从XML中写入、读取、修改数据(附源码)
37 0
|
4月前
|
XML 存储 JSON
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
开发时经常会遇到需要保存配置的情况,最常见的实现方式是将对象序列化成Json,再写入文件并保存到本地磁盘。 本文将使用开源库**ApeFree.DataStore**来替换原有的对象存储过程,实现一个可以随意切换存储方式的对象存储方法。 ApeFree.DataStore是一款可配置的对象存储库,支持在不同平台/介质中对内存中的对象进行存储与还原(如本地存储、注册表存储)。支持配置序列化格式(如Json、Xml),支持配置压缩算法(如GZip、Defalte),支持配置加密算法(如AES、RSA)。
68 0
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
|
4月前
|
XML 存储 JSON
C# | JSON格式与XML格式互相转换
JSON格式与XML格式是目前互联网上使用最为广泛的数据交换格式之一,而两种格式各自有着自己的特点和优势。 在实际开发中,我们经常需要将数据在不同的系统或模块之间进行传递和转换,而JSON格式和XML格式的互相转换是一项非常基础和必要的技能。 同时,对于需要将数据存储在不同的介质中的应用场景,比如在移动端本地存储数据,或者在服务器端将数据保存到文件或数据库中,也需要将JSON或XML格式进行相应的转换。 因此,熟练掌握JSON与XML格式互相转换的方法对于开发人员来说是非常重要的。在本文中,我们将介绍常用的JSON和XML互相转换的方法及其实现。
58 0
C# | JSON格式与XML格式互相转换