C#操作XML

None.gif已知有一个XML文件(bookstore.xml)如下: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif    
<book genre="fantasy" ISBN="2-3631-4"> 
None.gif        
<title>Oberon's Legacy</title> 
None.gif
        <author>Corets, Eva</author> 
None.gif        
<price>5.95</price> 
None.gif    
</book> 
None.gif
</bookstore> 
None.gif
None.gif
1、往<bookstore>节点中插入一个<book>节点: 
None.gifXmlDocument xmlDoc
=new XmlDocument(); 
None.gifxmlDoc.Load(
"bookstore.xml"); 
None.gifXmlNode root
=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> 
None.gif
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点 
None.gif
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 
None.gif
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 
None.gif

None.gifXmlElement xesub1
=xmlDoc.CreateElement("title"); 
None.gifxesub1.InnerText
="CS从入门到精通";//设置文本节点 
None.gif
xe1.AppendChild(xesub1);//添加到<book>节点中 
None.gif
XmlElement xesub2=xmlDoc.CreateElement("author"); 
None.gifxesub2.InnerText
="候捷"
None.gifxe1.AppendChild(xesub2); 
None.gifXmlElement xesub3
=xmlDoc.CreateElement("price"); 
None.gifxesub3.InnerText
="58.3"
None.gifxe1.AppendChild(xesub3); 
None.gif
None.gifroot.AppendChild(xe1);
//添加到<bookstore>节点中 
None.gif
xmlDoc.Save("bookstore.xml"); 
None.gif
//=============================================== 
None.gif
结果为: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif    
<book genre="fantasy" ISBN="2-3631-4"> 
None.gif        
<title>Oberon's Legacy</title> 
None.gif
        <author>Corets, Eva</author> 
None.gif        
<price>5.95</price> 
None.gif    
</book> 
None.gif    
<book genre="李赞红" ISBN="2-3631-4"> 
None.gif        
<title>CS从入门到精通</title> 
None.gif        
<author>候捷</author> 
None.gif        
<price>58.3</price> 
None.gif    
</book> 
None.gif
</bookstore> 
None.gif
None.gif
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。 
None.gifXmlNodeList nodeList
=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 
None.gif
foreach(XmlNode xn in nodeList)//遍历所有子节点 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifXmlElement xe
=(XmlElement)xn;//将子节点类型转换为XmlElement类型 
InBlock.gif
if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红” 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe.SetAttribute(
"genre","update李赞红");//则修改该属性为“update李赞红” 
InBlock.gif

InBlock.gifXmlNodeList nls
=xe.ChildNodes;//继续获取xe子节点的所有子节点 
InBlock.gif
foreach(XmlNode xn1 in nls)//遍历 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifXmlElement xe2
=(XmlElement)xn1;//转换类型 
InBlock.gif
if(xe2.Name=="author")//如果找到 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe2.InnerText
="亚胜";//则修改 
InBlock.gif
break;//找到退出来就可以了 
ExpandedSubBlockEnd.gif
}
 
ExpandedSubBlockEnd.gif}
 
InBlock.gif
break
ExpandedSubBlockEnd.gif}
 
ExpandedBlockEnd.gif}
 
None.gif
None.gifxmlDoc.Save(
"bookstore.xml");//保存。 
None.gif
//================================================== 
None.gif
最后结果为: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif
<book genre="fantasy" ISBN="2-3631-4"> 
None.gif
<title>Oberon's Legacy</title> 
None.gif
<author>Corets, Eva</author> 
None.gif
<price>5.95</price> 
None.gif
</book> 
None.gif
<book genre="update李赞红" ISBN="2-3631-4"> 
None.gif
<title>CS从入门到精通</title> 
None.gif
<author>亚胜</author> 
None.gif
<price>58.3</price> 
None.gif
</book> 
None.gif
</bookstore> 
None.gif
None.gif
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。 
None.gifXmlNodeList xnl
=xmlDoc.SelectSingleNode("bookstore").ChildNodes; 
None.gif
None.gif
foreach(XmlNode xn in xnl) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifXmlElement xe
=(XmlElement)xn; 
InBlock.gif
if(xe.GetAttribute("genre")=="fantasy"
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe.RemoveAttribute(
"genre");//删除genre属性 
ExpandedSubBlockEnd.gif
}
 
InBlock.gif
else if(xe.GetAttribute("genre")=="update李赞红"
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifxe.RemoveAll();
//删除该节点的全部内容 
ExpandedSubBlockEnd.gif
}
 
ExpandedBlockEnd.gif}
 
None.gifxmlDoc.Save(
"bookstore.xml"); 
None.gif
//=========================================== 
None.gif
最后结果为: 
None.gif
<?xml version="1.0" encoding="gb2312"?> 
None.gif
<bookstore> 
None.gif
<book ISBN="2-3631-4"> 
None.gif
<title>Oberon's Legacy</title> 
None.gif
<author>Corets, Eva</author> 
None.gif
<price>5.95</price> 
None.gif
</book> 
None.gif
<book> 
None.gif
</book> 
None.gif
</bookstore> 
None.gif
None.gif
4、显示所有数据。 
None.gifXmlNode xn
=xmlDoc.SelectSingleNode("bookstore"); 
None.gif
None.gifXmlNodeList xnl
=xn.ChildNodes; 
None.gif
None.gif
foreach(XmlNode xnf in xnl) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gifXmlElement xe
=(XmlElement)xnf; 
InBlock.gifConsole.WriteLine(xe.GetAttribute(
"genre"));//显示属性值 
InBlock.gif
Console.WriteLine(xe.GetAttribute("ISBN")); 
InBlock.gif
InBlock.gifXmlNodeList xnf1
=xe.ChildNodes; 
InBlock.gif
foreach(XmlNode xn2 in xnf1) 
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif
InBlock.gifConsole.WriteLine(xn2.InnerText);
//显示子节点点文本 
ExpandedSubBlockEnd.gif
}
 
ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/DODONG/archive/2006/04/07/369302.html

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

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

相关文章

[vue] $nextTick有什么作用?

[vue] $nextTick有什么作用&#xff1f; 处理数据动态变化后&#xff0c;dom还未及时更新的问题。nexttick就可以获取到数据更新后最新的dom变化个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

java 覆盖和隐藏_Java方法的覆盖与隐藏的区别分析

本篇文章介绍了&#xff0c;关于Java方法的覆盖与隐藏的区别分析。需要的朋友参考下关于隐藏和覆盖的区别&#xff0c;要提到RTTI(run-time type identification)(运行期类型检查)&#xff0c;也就是运行期的多态&#xff0c;当一个父类引用指向子类对象的时候&#xff0c;请看…

20175204 张湲祯 2018-2019-2《Java程序设计》 第一周学习总结

20175204 张湲祯 2018-2019-2《Java程序设计》第一周学习总结 教材学习内容总结 -第一章Java入门要点&#xff1a; -Java的地位&#xff1a;具有面向对象&#xff0c;与平台无关&#xff0c;安全稳定和多线程等优良特性&#xff0c;是软件设计中优秀的编程语言。 -Java的特点&a…

使用线程,防止当前程序被阻塞

在编写Windows Form程序时有时需要编写一个处理大事件的函数&#xff0c;这导致了程序的运行时间变得很长&#xff0c;这时问题就出现了&#xff0c;当程序没有处理完毕之前当前窗体被锁死了&#xff0c;而且用户如果此时点击窗体的其他部分&#xff0c;便会出现没有响应的标识…

[vue] 分别说说vue能监听到数组或对象变化的场景,还有哪些场景是监听不到的?无法监听时有什么解决方案?

[vue] 分别说说vue能监听到数组或对象变化的场景&#xff0c;还有哪些场景是监听不到的&#xff1f;无法监听时有什么解决方案&#xff1f; 无法监听时的方案&#xff1a; 数组&#xff1a;改变数组的值&#xff1a;this.$set() 改变数组长度&#xff1a;arr.splice() 对象&am…

java 文本排序_如何使用Java按最高编号对文本文件进行排序

使用像TreeMap这样的有序集合&#xff0c;它按照键的自然顺序保存其条目(键值映射)。因为&#xff0c;您希望对高分进行排序&#xff0c;将分数作为键和玩家名称作为其值。// instantiate your sorted collectionMap highestScores new TreeMap();// setup a file readerBuffe…

探索未知种族之osg类生物---呼吸分解之更新循环一

上节总结 前几天我们大体上介绍完成了osg的事件循环的介绍&#xff0c;总结一下osg的时间循环主要就是得到平台(windows)的所有消息&#xff0c;并遍历所有的node的eventCallback&#xff0c;并对他们进行处理。接下来我们就要进入osg的另一个维持生命的循环---更新循环。 更新…

【EXLIBRIS】纸版书目整理 -- 大书架 上 【292 种】【327册】

为了避免往年光说不练的现象&#xff0c;提前开始整理&#xff0c;并post在这里&#xff0c;接受监督&#xff0c;&#xff1a;&#xff09;一、大书架 上 【292 种】【327册】书名存放位置出版社史记&#xff08;全本&#xff09;大书架上中州古籍出版社儒林外史大书架上岳麓书…

CSS3属性——(一)

在CSS中追加了三个属性选择器&#xff1a;[att*val]、[att^val]、[att$val] [att*val]属性选择器 如果元素用att表示的属性的值中包含用val指定的字符&#xff0c;那么该元素使用这个样式。 [att^val]属性选择器 如果用att表示的属性值的开头字符为用val指定的字符的话&#xf…

[vue] v-if和v-for的优先级是什么?如果这两个同时出现时,那应该怎么优化才能得到更好的性能?

[vue] v-if和v-for的优先级是什么&#xff1f;如果这两个同时出现时&#xff0c;那应该怎么优化才能得到更好的性能&#xff1f; v-for 的优先级更高 避免出现这种情况&#xff0c;如果实在需要&#xff0c;则在外嵌套template&#xff0c;在这一层进行v-if判断&#xff0c;然…

JSP实战型程序连载:通用数据库连接JavaBean

package online;import java.sql.*;public class DBConn {private static String rootpath "web发布路径";private String sample "sample";private Connection con null;private Statement stmt null;ResultSet rs null;/**************************…

java变换变量赋值_Java变量的类型转换

在程序中&#xff0c;当把一种数据类型的值赋给另一种数据类型的变量时&#xff0c;需要进行数据类型转换。根据转换方式的不同&#xff0c;数据类型转换可分为两种:自动类型转换和强制类型转换。自动类型转换自动类型转换也叫隐式类型转换&#xff0c;指的是两种数据类型在转换…

字符串的拼接

再字符串的拼接的时候对一些字符需要进行转译&#xff0c;要不然会出现问题 var btn <button class"jui-form-button" type"button" οnclick"save_msg(\ json[i].id \,\ json[i].template \,document.getElementById(\disab i \).value,do…

[vue] vue在组件中引入插件的方法有哪些?

[vue] vue在组件中引入插件的方法有哪些&#xff1f; 插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制——一般有下面几种&#xff1a;添加全局方法或者属性。如: vue-custom-element添加全局资源&#xff1a;指令/过滤器/过渡等。如 vue-touch通过全局混入来…

]英文资料大全

语法 http://www.dailygrammar.com/ adventuretv,提供视频资料&#xff0c;内容多是各地的风土人情&#xff0c;很不错。 http://www.adventuretv.com/ 纽约时报&#xff0c;网上看新闻的好地方 http://www.nytimes.com/ 英文MP3下载的好地方 http://www.mp3raid.com/archiv…

java linearlayout_LinearLayout属性用法和源码分析

对于一个View(ViewGroup)来说实现无非于三个流程&#xff0c;onMeasure(测量)&#xff0c;onLayout(定位)&#xff0c;onDraw(绘制)&#xff0c;接下来就对这三个部分一一分析但是首先还是对LinearLayout变量进行介绍1.LinearLayout变量其实LinearLayout变量与上篇属性篇中关联…

[vue] vue实例挂载的过程是什么?

[vue] vue实例挂载的过程是什么&#xff1f; render, 没有则去编译编译vdom对实例进行watch个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

如何进行.NET高效开发

sugar 2006-03-12 13:53 转载于:https://www.cnblogs.com/SCOTT-SUN/archive/2006/06/02/416077.html

Linux 系统更改界面显示详解

1,修改配置文件 # inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # System initialization is started by /etc/init/rcS.conf # # Individual runlevels are started by /etc/init/…

jni c java互相调用_通过JNI实现Java和C++的相互调用

评论# re: 通过JNI实现Java和C的相互调用2008-07-29 14:14Always BaNg.不错&#xff0c;把字符转换也一并讲了吧&#xff0c;比如UTF-8的处理&#xff0c;USC-2与MBCS转换等。 回复 更多评论# re: 通过JNI实现Java和C的相互调用[未登录]2008-07-29 14:17role0523你是指Java和…