XML的简单读取与写入
我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
</bookstore>
1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS从入门到精通";//设置文本节点
xe1.AppendChild(xesub1);//添加到<book>节点中
XmlElement xesub2=xmlDoc.CreateElement("author");
xesub2.InnerText="候捷";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//添加到<bookstore>节点中
xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
</bookstore>
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
{
xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”
XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="author")//如果找到
{
xe2.InnerText="亚胜";//则修改
break;//找到退出来就可以了
}
}
break;
}
}
xmlDoc.Save("bookstore.xml");//保存。
//==================================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book genre="update李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>58.3</price>
</book>
</bookstore>
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//删除genre属性
}
else if(xe.GetAttribute("genre")=="update李赞红")
{
xe.RemoveAll();//删除该节点的全部内容
}
}
xmlDoc.Save("bookstore.xml");
//===========================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book>
</book>
</bookstore>
4、显示所有数据。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeList xnl=xn.ChildNodes;
foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf1=xe.ChildNodes;
foreach(XmlNode xn2 in xnf1)
{
Console.WriteLine(xn2.InnerText);//显示子节点点文本
}
}
相关文章:
美国 AI 博士一针见血:Python 这样学最容易成为高手!
我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式࿰…

区域链实践第一步——区域链测试环境搭建
区域链光速发展,在许多人的期许下,已经成为了互联网下一个革新点。区块链会成就的未来价值互联网,是新时代的基石。 IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通…

DataGrid的几个小技巧
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/方法一:使用模版列 我们在绑定好数据的DataGrid增加一个模版列,在列中放置一个按钮<asp:TemplateColumn><ItemTemplate><asp:Button id"btnDelete&q…
32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...
在大学阶段,大家都学过概率论、线性代数和微积分的课程,但是为什么在面对机器学习中的数学问题时,却有一种天书的既视感?第一,大学课程中的知识点并没有完全覆盖机器学习领域所需。 回想一下大学概率统计课程内容的内容…

DHCP tftp PXE实现Ghost网络克隆
概述:加ghost参数,实现客户端只需连接网线,在无光驱、软驱的情况下,且无需其他配置,完成网络克隆。所要用到的软件:1、ghost 8.2 企业版中的Ghost Boot Wizard(其中的ghost.exe程序可以用ghost1…

PHP文件上传和文件操作案例
<?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname upload; $fileClass new fileClass($dirname); $fileClass -> fileCMM();/*文件重命名操作*/ $fileClass -> fileDelete();/*文件删除操作*/ ?> <!DOCTYPE html> <html> <…

将模式对话框的返回值回送(PostBack)到服务端
作者:张老三的专栏 http://blog.csdn.net/billy_zh/在一些应用中,希望将模式对话框的值回送(PostBack)到服务端,也就是执行一个服务端操作,从而刷新页面。举个例子:比方说新建一个订单,此时希望能在模式…

android zip解压缩(含有子目录)
为什么80%的码农都做不了架构师?>>> note: 如果目录中含有中文名称, 要用substr new String(substr.getBytes("8859_1"), "GB2312");这样的语句转换,否则为乱码 /*** 解压缩功能.* 将ZIP_FILENAME文件解压…
用Python实现抖音上的“人像动漫化”特效,原来这么简单
作者 | 黄伟呢来源 | 数据分析与统计学之美前几天,女友拉着我和她玩儿抖音,就是这个人像动漫化的操作,顿时觉得很好玩儿。我心想:Python 既然这么强大,是不是也可以使用 Python 程序来实现这样一个操作呢?哈…

easyui在IE中: SCRIPT1003: 缺少 ':'
转载于:https://www.cnblogs.com/FredLee/p/5894614.html
NumPy学的还不错?来试试这20题
来源 | 早起Python(ID: zaoqi-python)又到了NumPy进阶修炼专题。NumPy大家应该不陌生了,看了太多的原理讲解之后,用刷题来学习是最有效的方法,本文将带来20个NumPy经典问题,附赠20段实用代码,拿…

tomcat报 Context [] startup failed due toprevious errors
今天同事在实施项目中,遇到一个问题,就是项目布到tomcat服务器上了,却总是找不到访问路径.tomcat报 Context [] startup failed due toprevious errors 当时就觉的很郁闷,项目是本机测试完整打包的.按以前的项目实施也很少出现这样的问题.在网上搜索以下解决方案: ------解决方…

DataGrid中自带的分页功能的使用
作者:木子 http://blog.csdn.net/derny/1、把AllowPaging属性设置为true 并设置PageSize的大小 2、在html页面中设置datagrid的属性OnPageIndexChanged"DataGrid_Page" // //DataGrid_Page 为点击页数的时候激发的事件 3、在程序中加入代码如下&…

34补1-2_3 HA Cluster基础及heartbeat实现HA
HA Cluster基础及heartbeat实现HA配置环境node1:192.168.1.121CentOS6.7node2:192.168.1.122CentOS6.7node3:192.168.1.123CentOS6.7vip 192.168.1.80配置前准备# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 loc…

关于SSL配置的报告
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/一,服务器上装有CA(Certificate Server) 1,服务器上安装CA Win2000中带有CA的安装程序。单击Start,Control Pannel Add/Remove Prog…
认知智能,AI的下一个十年 | AI Procon 2020
整理 | 屠敏 出品 | AI科技大本营(ID:rgznai100) 60 年间的「三起两落」 ,人工智能的沉浮变迁。 在 1956 年的夏天,人工智能在美国达特茅斯大学召开的学术会议之上蹒跚学步,吸引无数研究学者对其智能化的探索以及未来美…

STL 队列queue
q.front() 返回队头元素 q.push(a) 将元素a入队 q.pop() 队头元素出队 q.empty() 如果队列为空 返回ture 否则返回false转载于:https://www.cnblogs.com/xujian9502/archive/2012/02/19/2358055.html

OpenCV——使用ROI进行图像切割
ROI(region of interest)——感兴趣区域。 1.用途 这个区域是图像分析所关注的重点。圈定这个区域,以便进行进一步的处理。而且,使用ROI指定 想读入的目标,可以减少处理时间,增加精度,给图像处理…

Asp.net动态生成html页面
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/适用于:Microsoft ASP.NET 摘要:asp.net动态生成html页面,适用 简介 此功能适用于后台数据库功能不强的web站点,即大部分文本不是存放在数据库的…

View 5.1 重装上阵(4—基础架构篇)
从底层架构方面来看,VIEW 5.1最大的改进在于引入了Content-Based Read Cache(CBRC) 技术,大大降低了部署桌面虚拟化所带来的IOPS风暴,同时大大降低了对于存储的压力和成本,可谓桌面虚拟化领域的一大福音。 在以往的桌面虚拟化项目…
再见了,Python!!
结合我最近这些年的 Python 学习、开发经验,发现近90%的程序员在学 Python 时都会遇到下面这3个问题:1.想学Python,但不知从何学起,应用方向太多了也不知道该选择什么方向...2.基础入门看似简单,但是进阶实战就举步维艰…

alert在asp.net中如何使用??
改成这样:string str"<script languagejavascript>alert(省局数据不能进行修改!);</script>";Page.RegisterStartupScript("dd",str); 提示成功后转到别的页面Response.Write("<script>window.alert(提示语…

.NET工程师必须掌握的知识点
以下内容是转载的 Microsoft SQL Server 数据库 一、创建和维护数据库 1、数据库 SQL Server 数据库的组成部分?(参见联机丛书) 如何保证数据库的完整性、安全性、并发性? 数据库设计创建步骤?(参见…
@程序员:这些瓜没吃到,可以告别互联网了!
最近,程序员届有一个重大好消息,可能很多人还不知道,那就是:国内某些城市已经开始程序员人才补贴了!对于人工智能公司的项目开发、人才引进、科技研发,最高按照国拨经费的30%给予配套支持,单个项…

日志分析工具splunt
实验环境 网关 classroom 172.25.8.254 workstation 172.25.8.9 server a-jeth0 172.25.8.10-外网 eth1 192.168.0.x内网 eth2 192.168.1.x备用 -------------------------------------------- 需求: 设计: 原理:日志的作用,1&a…

正则表达式语法规则收集
turnmissile 的 Blog http://blog.csdn.net/turnmissile/ Microsoft已经把正则表达式的规则收录在了msdn里面了,有兴趣的朋友可以自己去研究一下(ms-help://MS.MSDNQTR.2003OCT.1033/cpgenref/html/cpconRegularExpressionsLanguageElements.htm),这里罗…
Python实现信息自动配对爬虫排版程序
作者 | 李秋键责编 | 晋兆雨头图 | CSDN付费下载自视觉中国在很多的公司项目中,常常有很多对office项目的比较机械化的操作,在这里就可以借助python实现对office的合理排版。而这里我们就将借助海尔公司的出货表爬取对应图片信息,并重新排版成…

关于2012年度土建工程专业中级专业技术资格考试有关问题的通知
关于2012年度土建工程专业中级专业技术资格考试有关问题的通知 现将2012年度土建工程专业初、中级专业技术资格考试、报名、培训工作有关事项通知如下: 一、考试组织 湖南省住房和城乡建设厅、省人力资源和社会保障厅联合成立领导小组,负责对考试工作进行…

Android自定义控件NumberCircleProgressBar(圆形进度条)的实现
Android自定义控件NumberCircleProgressBar(圆形进度条)的实现

做出的C++选择以及背后的原因
要让出资人明白你做出的C选择以及背后的原因。也许出资人会有更容易操作、更快实现的好主意。3、为你提供的日期说明信心范围。很可能管理层不明白你的估算意味着什么,而且你也有可能不理解他们所要的东西。 2.变量的C使用范围每个变量的使用范围只在定义…