在.NET中使用DataSet来获取XML数据与保存XML数据很简单,很好用,不过有一些复杂点的XML结构,使用DataSet来操作就没有XmlDocument来操作这么好用了,所以本文在C#使用XmlDocument来操作XML的查询、增加、修改、删除、保存的基本操作。
下面看实例:
XML文件:books.xml
1<?xml version="1.0" encoding="UTF-8"?>
2<books>
3 <book> //这里没有id 下面代码会增加
4 <name>哈里波特</name>
5 <price>10</price>
6 <memo>这是一本很好看的书。</memo>
7 </book>
8 <book id="B02">
9 <name>三国演义</name>
10 <price>10</price>
11 <memo>四大名著之一。</memo>
12 </book>
13 <book id="B03">
14 <name>水浒</name>
15 <price>6</price>
16 <memo>四大名著之一。</memo>
17 </book>
18 <book id="B04">
19 <name>红楼</name>
20 <price>5</price>
21 <memo>四大名著之一。</memo>
22 </book>
23</books>
下面是C#代码:
1eusing System;
2using System.Collections.Generic;
3using System.Text;
4using System.Xml;
5
6namespace TestXml
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
// XML表示Dom结构中的元素.XmlElement类的constructor 是protected,所以要通过XmlDocument().createElement()来实例化.
12 XmlElement theBook = null, theElem = null, root = null;
13 XmlDocument xmldoc = new XmlDocument();
14 try
15 {
16 xmldoc.Load("Books.xml");
17 root = xmldoc.DocumentElement; // DocumentElement 获取xml文档对象的根XmlElement.
18
19 //--- 新建一本书开始 ----
20 theBook = xmldoc.CreateElement("book");
21 theElem = xmldoc.CreateElement("name");
22 theElem.InnerText = "新书";
23 theBook.AppendChild(theElem); //添加指定的节点的子节点列表的末尾.
24
25 theElem = xmldoc.CreateElement("price");
26 theElem.InnerText = "20"; // innerText: 所有子节点值的串联字符串.
27 theBook.AppendChild(theElem);
28
29 theElem = xmldoc.CreateElement("memo");
30 theElem.InnerText = "新书更好看。";
31 theBook.AppendChild(theElem);
32 root.AppendChild(theBook);
33 Console.Out.WriteLine("--- 新建一本书开始 ----");
34 Console.Out.WriteLine(root.OuterXml); //节点自身及其所以子节点的xml字符串.
35 //--- 新建一本书完成 ----
36
37 //--- 下面对《哈里波特》做一些修改。 ----
38 //--- 查询找《哈里波特》----
39 theBook = (XmlElement)root.SelectSingleNode("/books/book[name=''哈里波特'']"); //selectSingleNode 根据XPath表达式,获得符合条件的第一个节点.
40 Console.Out.WriteLine("--- 查找《哈里波特》 ----");
41 Console.Out.WriteLine(theBook.OuterXml);
42 //--- 此时修改这本书的价格 -----
43 theBook.GetElementsByTagName("price").Item(0).InnerText = "15";//getElementsByTagName返回的是NodeList,所以要跟上item(0)
44 Console.Out.WriteLine("--- 此时修改这本书的价格 ----");
45 Console.Out.WriteLine(theBook.OuterXml);
46 //--- 另外还想加一个属性id,值为B01 ----
47 theBook.SetAttribute("id", "B01");
48 Console.Out.WriteLine("--- 另外还想加一个属性id,值为B01 ----");
49 Console.Out.WriteLine(theBook.OuterXml);
50 //--- 对《哈里波特》修改完成。 ----
51
52 //--- 要用id属性删除----
53 theBook = (XmlElement)root.SelectSingleNode("/books/book[@id=''B02'']");
54 Console.Out.WriteLine("--- 要用id属性删除《三国演义》这本书 ----");
55 Console.Out.WriteLine(theBook.OuterXml);
56 theBook.ParentNode.RemoveChild(theBook);
57 Console.Out.WriteLine("--- 删除后的XML ----");
58 Console.Out.WriteLine(xmldoc.OuterXml);
59
60 //--- 再将所有价格低于10的书删除 ----
61 XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]");
62 Console.Out.WriteLine("--- 再将所有价格低于10的书删除 ---");
63 Console.Out.WriteLine("--- 符合条件的书有 " someBooks.Count "本。 ---");
64
65 for (int i = 0; i < someBooks.Count; i ++ )
66 {
67 someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i));
68 }
69 Console.Out.WriteLine("--- 删除后的XML ----");
70 Console.Out.WriteLine(xmldoc.OuterXml);
71
72 xmldoc.Save("books.xml");//保存到books.xml
73
74 Console.In.Read();
75 }
76 catch (Exception e)
77 {
78 Console.Out.WriteLine(e.Message);
79 }
80 }
81 }
82}
http://ivyliner.blog.163.com/blog/static/1181870342010525105051407/
分享到:
相关推荐
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word、excel、pdf、html、xml、markdown等文档格式的导出。
功能说明:可以管理首页、个人中心、用户管理、旅行社管理、产品分类管理、门店公告管理、行政中心管理、订单信息管理、合同信息管理、社区留言、系统管理等功能模块。环境说明:开发语言:Java框架:springboot,mybatisJDK版本:JDK1.8数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/ideaMaven包:Maven3.6
在信息化技术不断进步和现代经济快速发展的今天,传统的数据管理方式已经被软件化的存储、归纳和集中处理所取代。图书管理系统正是在这种背景下应运而生,旨在帮助管理者高效处理大量数据信息,提升事务处理效率,实现高效工作的目标。该系统采用成熟的SSM框架,利用跨平台的Java语言开发,数据库则选用广泛使用的MySQL,以满足大型商业网站的需求。 系统实现了用户在线选书、答题和查看考核分数的功能,同时,管理员可以进行字典管理、留言板管理、书籍管理、书籍收藏管理、书籍留言管理、书籍借阅订单管理、书籍挂失管理、书籍需求管理、用户管理和管理员管理等。图书管理系统的界面设计简洁美观,功能模块布局与同类网站保持一致,不仅实现了基本功能,还提供了数据安全问题的实用解决方案。该系统不仅提高了管理者处理工作事务的效率,而且实现了数据信息管理的整体化、规范化和自动化。
电子手轮Ver1.1(位置跟随,X轴或Y轴) 1.200smart、威纶通触摸屏 2.手轮或编码器+PLC+伺服驱动器 3.手轮接入PLC,伺服接Q0.0或Q0.1,手轮转动,伺服电机准确跟随。 4.采用PLS指令编写 5.不带加减速 6.可选择X轴或Y轴跟随手轮。
wzb剧集爬虫程序代码1
Python数据结构与算法-PPT课件.rar。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
收到防护服快快快啊啊啊啊啊
西门子s7 200smart与3台欧姆龙E5cc温控器通讯控 功能:可以直接应用现场 实现西门子s7 200smart对3台欧姆龙E5cc温控器进行485通讯控制,在触摸屏上设定温度,读取温度,设定探头型号,报警类型,报警值,报警上下限等功能。 程序有通讯故障后再恢复功能,也可以后续根据需要在此基础上扩充台数 器件:西门子s7 200smart ST20 PLC.昆仑通态MCGS ,3台欧姆龙E5cc温控器。 说明:的是程序,可以直接应用现场,带详细注释程序,触摸屏程序,PLC设置和温控器设置,接线说明书。
光伏-电池充电模型,可以很好的稳定直流输出电压。 采用最大功率跟踪MPPT算法,通过boost电路输出电压,电池侧采用电压电流PI双闭环控制,通过双向电路给电池充放电。 直流侧参考电压为48v。
基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录的简单分析项目源码+文档说明.zip基于 hadoop和hbase的电商交易记录
三相异步电机直接转接控制系统simulink仿真
沈韬校长带队赴嵩明通用技术昆明机床考察交流 2.pdf
内容概要:本文从定义出发,详细介绍了HTTP协议的基础功能,发展历程,尤其是各版本的重要特点。之后重点讲解了HTTP的工作原理及其面临的安全问题和解决方案。最后总结了HTTP协议对未来互联网发展的贡献和前景。 适合人群:所有对网络基础知识感兴趣的技术初学者及开发者。 使用场景及目标:理解和掌握HTTP这一互联网基石性协议,从而能更好地从事web应用的设计与开发等工作。 阅读建议:建议先通读全文把握大意,对于不明白的概念可上网查找更多资料加深理解。同时,最好边学习理论知识边动手实践搭建简单的http服务来增强体验感。
016 - 搞笑顺口溜通用大全
杭电数电第二章课后答案
046 - 网络直播常用名词
091 - 直播主播场控经典语录
永磁同步电机矢量控制(磁场定向控制FOC)模型,一共有三个,分别是常规PI控制、滞环电流控制和滑膜速度控制,每个的控制效果都不错。
Bernsen算法的基本思想为:设置两个初始值T1=15和T2=128,计算以任意一个像素g为中心、大小为(2w+1)×(2w+1)窗口内的所有像素灰度值的最大值M与最小值N,得到M和N的均值T。若M-N>T1,则当前点的阈值为T;若M-N<T1,则表示该窗口所在区域灰度级差别较小,则窗口在目标区或在背景区,再判断T与T2的关系:若T>T2,则当前点的灰度值为255;否则,当前点g的灰度值为0。利用阈值T遍历图像中每个像素点,得到与原图像维数相同的二值化图像。该算法描述如下:设f(x,y)表示(x,y)处的像素灰度值,以(x,y)为中心、大小为(2w+1)×(2w+1)的区域S内的阈值为