我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!
我把我写的四种方法代码贴上来吧,照着写没啥问题。
注:
<bookstore>
<book>
<Id>1</Id>
<tate>2010-10-10</tate>
<txt>123</txt>
<yy>2015</yy>
<dd>23</dd>
</book>
</bookstore>
这是xml文件的目录结构。
首先开始xml读取数据:
XmlDocument doc = new XmlDocument(); //声明一个xml文件对象
doc.Load(@"..\..\sb.xml"); //获取xml文件路径
XmlNode xn = doc.SelectSingleNode("bookstore"); //获取xml文件根节点
XmlNodeList xnl = xn.ChildNodes; //获取子节点
//循环子节点获取值
foreach (XmlNode xn1 in xnl)
{
//声明一个对象,这个对象就是xml文件目录下的节点,声明一个对象用来接收xml文件数据
Info i = new Info();
// 将节点转换为元素,便于得到节点的属性值
XmlElement xe = (XmlElement)xn1;
// 得到Type和ISBN两个属性的属性值
// 得到Book节点的所有子节点
XmlNodeList xnl0 = xe.ChildNodes;
//获取数据并且保存到list集合中(list集合是泛型集合)
i.ID = xnl0.Item(0).InnerText;
i.date = xnl0.Item(1).InnerText;
i.txt = xnl0.Item(2).InnerText;
i.yy = xnl0.Item(3).InnerText;
i.dd = xnl0.Item(4).InnerText;
list.Add(i);
}
添加xml数据:
//声明一个要添加的xml数据对象
Info i = new Info();
i.date = DateTime.Now.ToString();
i.txt = txts.Text;
i.yy = DateTime.Now.ToString();
i.dd = DateTime.Now.ToString();
i.ID = (list.Count + 1).ToString();
声明一个xml对象
XmlDocument doc = new XmlDocument();
//获取xml文件路径
doc.Load(@"..\..\sb.xml");
//获取根节点
XmlNode root = doc.SelectSingleNode("bookstore");
//创建子节点
XmlElement xelKey = doc.CreateElement("book");
//为子节点创建子节点
XmlElement xmlid = doc.CreateElement("Id");
xmlid.InnerText = i.ID;
xelKey.AppendChild(xmlid);
XmlElement xmldate = doc.CreateElement("date");
xmldate.InnerText = i.date;
//添加当前时间
xelKey.AppendChild(xmldate);
//创建文本节点
XmlElement xmltxt = doc.CreateElement("txt");
xmltxt.InnerText = i.txt;
//添加当前文本框
xelKey.AppendChild(xmltxt);
//创建文本节点
XmlElement xmlyy = doc.CreateElement("yy");
xmlyy.InnerText = i.yy;
//添加当前文本框
xelKey.AppendChild(xmlyy);
//创建文本节点
XmlElement xmltdd = doc.CreateElement("dd");
xmltdd.InnerText = i.dd;
//添加当前文本框
xelKey.AppendChild(xmltdd);
//在根节点上添加子节点
root.AppendChild(xelKey);
//保存添加的数据(对xml文件进行增删改操作后,必须执行这个方法)
doc.Save(@"..\..\sb.xml");
修改xml数据:
int id ; //这是一个标示值,指在循环时,根据这个标示值来匹配修改的是哪一个节点
txtUP.Text //当前要修改数据的文本框值
//声明一个xml对象
XmlDocument xmlDoc = new XmlDocument();
//获取xml路径
xmlDoc.Load(@"..\..\sb.xml");
//获取xml文件根节点
XmlNode xns = xmlDoc.SelectSingleNode("bookstore");
//获取子节点
XmlNodeList xnl = xns.ChildNodes;
//循环子节点
foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;//将节点转换一下类型
if (xe["Id"].InnerText == id)//判断该子节点是否是要查找的节点
{
//循环节点对象
foreach (XmlNode item in xe.ChildNodes)
{
if (item.Name == "txt")
{
item.InnerText = txtUP.Text;
xmlDoc.Save(@"..\..\sb.xml");//再一次强调 ,一定要记得保存的该XML文件
break;
}
}
}
//若是当前节点下还有子节点如下操作
//XmlNodeList xnl2 = xn.ChildNodes;//取出该子节点下面的所有元素
//foreach (XmlNode xn2 in xnl2)
//{
// XmlElement xe2 = (XmlElement)xn2;//转换类型
// if (xe2.Name == "price")//判断是否是要查找的元素
// {
//这里你就可以进行操作,是喜欢查找子节点还是在当前节点进行操作
// }
//}
}
xmlDoc.Save(@"..\..\sb.xml");////保存添加的数据(对xml文件进行增删改操作后,必须执行这个方法)
删除xml节点包括数据:
int id; //标识值,用于判断删除那条数据
//声明一个xml对象
XmlDocument xmldoc = new XmlDocument();
//打开一个xml文件
xmldoc.Load(@"..\..\sb.xml");
//获取根节点
XmlNode xnRoot = xmldoc.SelectSingleNode("bookstore");
//获取根节点下的子节点
XmlNodeList nodelist = xnRoot.ChildNodes;
//循环所有子节点
foreach (XmlNode node in nodelist)
{
//判断子节点的值是否为当前选中的那一项
if (node.SelectSingleNode("Id").InnerXml == id)
{
//是的话则进行删除该节点
xnRoot.RemoveChild(node);
//保存xml文件操作
xmldoc.Save(@"..\..\sb.xml");
}
}
以上是我对xml文件的增删改查操作,若是好的建议或者代码有什么问题的,可以留言,我会参考你的意见的。
我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!的更多相关文章
- 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)
我们常常会用到通过图书的名称来查询图书那么这种话我们也就会使用到从数据库中搜索出数据而且载入到自己的Jsp页面中 这种话我们须要将从数据库中获取到的数据放进响应中然后通过%=request.getAt ...
- Golang中map的三种声明方式和简单实现增删改查
package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...
- flask中 多对多的关系 主从表之间的的增删改查
# 角色表模型class Role(db.Model): r_id = db.Column(db.Integer, primary_key=True) r_name = db.Column(db.St ...
- C#在winform中操作数据库,实现数据增删改查
1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本 ...
- 中阶d03.3 JDBC_CURD_Util --- 使用 junit执行单元测试(增删改查)
1.单元测试环境准备 https://www.cnblogs.com/longesang/p/11399010.html 2.测试 3.结果返回 4.代码 新建一个test目录统一存放测试案例 查: ...
- MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)
设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...
- C#窗体中读取修改xml文件
由于之前没有操作过xml文件,尤其是在窗体中操作xml,脑子一直转不动,而且很抵制去做这个功能,终于还是突破了自己通过查询资料完成了这个功能,在此记录一下自己的成果. 功能说明:程序中存在的xml文件 ...
- winform窗体(六)——DataGridView控件及通过此控件中实现增删改查
DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定: List<xxx> list = new List<xxx> ...
- Winform(DataGridView)控件及通过此控件中实现增删改查
DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定: List<xxx> list = new List<xxx> ...
随机推荐
- CSS实例:水平居中和垂直居中的多种解决方案
1.单行垂直居中 文字在层中垂直居中vertical-align 属性是做不到的.我们这里有个比较巧妙的方法就是:设置height的高度与line-height的高度相同! Example Sourc ...
- 【2012noip提高组】借教室
在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望编程 ...
- 一个简单的shell脚本
一个简单的shell脚本 一个简单的shell脚本 编写 假设我想知道目前系统上有多少人登录,使用who命令可以告诉你现在系统有谁登录: 1.[KANO@kelvin ~]$ who2.KANO tt ...
- VMware的CentOS无法上网的解决方法
1)点击 VM->Settings Hardware 选项卡下面 2)点击 Network Adapter 设置在虚拟机中将网络配置设置成NAT 3)开启 Windows服务中的 VMware ...
- Messenger类的使用
一.Messenger类 作用:类似Message类,但是是跨进程使用的. 解析:它的底层是由AIDL实现的,从构造方法可以看出 //Service使用 public Messenger(Handle ...
- Smarty3配置
下载Smarty压缩包并解压,复制其中的libs文件夹到我们的PHP工程目录下(可将其改名为smarty).同时,在工程目录下新建三个文件夹,分别取名为templates.templates_c和sm ...
- data stage走起
如题,希望以后可以找到相应的工作.(已经工作3年以上了)
- co & thunkify
co 之前在generator中已经介绍过Co了 戳这里 http://www.cnblogs.com/cart55free99/p/4893498.html co一般和thunkify一起使用 能够 ...
- JAVA的IO运用
IO OF JAVA想写好一篇关于JAVA的IO的文章不容易,因为它涉及的东西很多难以写得有深度和有思路.我虽不才但也写.这篇文章有我个人不少的见解,虽然涉足计算机不深但我不想用一大堆这个可能那个可能 ...
- 我使用过的Linux命令之date - 显示、修改系统日期时间
原文地址:http://www.cnblogs.com/diyunpeng/archive/2011/11/20/2256538.html 用途说明 ate命令可以用来显示和修改系统日期时间,注意不是 ...