步步为营-21-xml的增删改查
1 增加(存在则添加,不存在则新建)
//对xml的操作--
XmlDocument doc = new XmlDocument();
if (File.Exists("Person.xml"))
{
//如果存在,加载文档
doc.Load("Person.xml");
//获取根节点
XmlElement person = doc.DocumentElement; XmlElement student = doc.CreateElement("Student");
student.SetAttribute("ID", ""); XmlElement name = doc.CreateElement("Name");
name.InnerXml = "张三";
student.AppendChild(name); XmlElement age = doc.CreateElement("Age");
age.InnerXml = "";
student.AppendChild(age); XmlElement gender = doc.CreateElement("Gender");
gender.InnerXml = "男";
student.AppendChild(gender); person.AppendChild(student); }
else
{
//不存在创建
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
XmlElement person = doc.CreateElement("Person");
doc.AppendChild(person); XmlElement student = doc.CreateElement("Student");
student.SetAttribute("ID", ""); XmlElement name = doc.CreateElement("Name");
name.InnerXml = "逍遥小天狼";
student.AppendChild(name); XmlElement age = doc.CreateElement("Age");
age.InnerXml = "";
student.AppendChild(age); XmlElement gender = doc.CreateElement("Gender");
gender.InnerXml = "男";
student.AppendChild(gender); person.AppendChild(student);
}
doc.Save("Person.xml");
Add

2 查询
//02-1 先加载
doc.Load("Person.xml");
//02-2 获取根节点
XmlElement person = doc.DocumentElement;
//02-3 将根节点下所有的子节点拿出来,放入到LNodeList中
XmlNodeList xnl = person.ChildNodes;
//02-4 显示
foreach (XmlNode item in xnl)
{
Console.WriteLine(item.InnerText);
}
Show

2.2 获取属性
//02-5 获取属性-修改节点
//获取字节s的方法
XmlNodeList Students = person.SelectNodes("Student");
foreach (XmlNode item in Students)
{
Console.WriteLine(item.Attributes["ID"].Value);
if (item.Attributes["ID"].Value=="")
{
//获取子节点方法 修改节点
item["Name"].InnerXml = "修改了名字";
}
}
doc.Save("Person.xml");

3 另一种读取xml文件方法 x-path
#region 03-通过x-path获取数据
doc.Load("Person.xml");
//03-01 获取根节点
XmlElement person = doc.DocumentElement;
XmlNode xn = person.SelectSingleNode("/Person/Student[@ID='110']/Name");
Console.WriteLine(xn.InnerText);
#endregion

4 删除
//04-01 加载文件,找到根节点
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
person.RemoveAll();
Console.WriteLine("删除成功");
删除所有
5 删除部分节点
//05-01 加载文件,找到根节点
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
XmlNode xn = person.SelectSingleNode("/Person/Student[@ID='110']/Age");
//注意不能直接删除,需要父节点删除
xn.ParentNode.RemoveAll();
Console.WriteLine("删除成功");
doc.Save("Person.xml");

6
步步为营-21-xml的增删改查的更多相关文章
- VB&XML的增删改查
简介:XML的增删改查 开发过程中有许多后台操作XML的过程,每次需要操作时都是找很多代码来参考或者百度一下.今天决定补充下XML操作的知识,把XML操作的增删改查都写了一遍,供以后开发参考 查询: ...
- 对oracle里面clob字段里面xml的增删改查学习
这段时间,我使用系统表里面有clob字段里面存放的xml信息,我们如何对xml进行增删改查操作呢,自己参考了很多也学到很多,给大家分享一下 首先我们先建测试表 CREATE TABLE EFGP_23 ...
- Mybatis_2.基于XML的增删改查
1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...
- java实现xml文件增删改查
java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...
- Mybatis之基于XML的增删改查
这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- 使用idea对XML的增删改查
XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...
- c# xml的增删改查操作 xmlDocument 的用法
1.将xml转换为DataTable string path = "";//xml的位置StringReader sr = null;XmlTextReader xmlReader ...
- .NET XML文件增删改查
查询 采用的是DataSet 的 ReadXML方法. DataSet ds = new System.Data.DataSet(); ds.ReadXml("bdc.xml"); ...
- C# winform xml的增删改查
代码如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using Syst ...
随机推荐
- Unity触发器有时失效的原因
unity里面的触发器有时候不起作用,我原以为是失效了.其实是这样的,所谓触发器就是被触发的物体,例如你子弹打小怪.如果把子弹设置成触发器那么是不成功的,因为子弹是主动的啊,那么把小怪设置成触发器了呢 ...
- springboot的注解详解
配置类相关: @PropertySource(value = "classpath:test.properties") //我们都把配置文件写到application.yml中 ...
- H5 localStorage sessionStorage
localStorage 用于长久保存整个网站的数据,没有过期时间,除非手动去除. sessionStorage 会话存储,临时存储,当用户关闭浏览器窗口后,数据被删除. 共同方法 以 localSt ...
- CentOS6.8下MySQL数据库忘记root密码解决方法
一.更改my.cnf配置文件 编辑/etc/my.cnf文件,在[mysqld]下添加skip-grant-tables,保存退出.如图: 重启mysql服务:services mysqld rest ...
- java中数据字典的使用:
数据字典:数据库中一个字段下存在多个值的情况(type:1:肉类 2:素菜类 3:服装类): 分析: 1:这种情况下往往需要新建一张表来对应type下面的字段,通常以---表名--字段名---字段 ...
- Java SE关键字-static
一. static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员 ...
- Pycharm+Anaconda安装及配置
Pycharm是一款功能非常强大的IDE,配合Anaconda使用会非常的方便. 在安装Pycharm之前,我们的电脑上已经安装了Anaconda. 我们从官网下载Pycharm社区版.(https: ...
- SpringMVC使用Hession发布远程服务
(1)三个项目,Api(存放提供者和消费者共有的xx,例如实体类以及服务接口等等).Service(服务提供者).Provider(服务消费者) Api部分代码 package cn.coreqi.e ...
- 为何time_before 起作用【转】
转自:http://decimal.blog.51cto.com/1484476/410673 Title: jiffies溢出与时间先后比较编制: chinakapok@sina.com日期:200 ...
- linux 查看cpu的使用百分比
先安装 sudo apt-get install sysstat 然后: mpstat -u 2 5