C# xml文件的创建,修改和添加节点 。
,.NET Framework完全支持XML DOM模式,但它不支持SAX模式。.NET Framework支持两种不同的分析模式:XML DOM分析器(XMLDocument类)和XML阅读器(XMLTextReader类),不支持SAX分析器, 但这并不意味着它没有提供类似SAX分析器的功能。通过XML阅读器可以将SAX的所有的功能很容易的实现及更有效的运用。
但是我们一般运用最多的是DOM。
一、创建xml文件
using System.Xml;
using System.IO;//这个一定要写
XmlDocument xmlDoc = new XmlDocument();
//加入XML的声明段落,Save方法不再xml上写出独立属性
xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
//加入根元素
XmlElement root = xmlDoc.CreateElement("ROOT");
xmlDoc.AppendChild(root);
XmlElement memberlist = xmlDoc.CreateElement("MEMBERLIST");
XmlElement memberA = xmlDoc.CreateElement("MEMBER");
memberA.SetAttribute("AGE", ">=29");
memberA.SetAttribute("SEX", "MALE");
XmlElement zs = xmlDoc.CreateElement("NAME");
zs.InnerText = "张三";
XmlElement ls = xmlDoc.CreateElement("NAME");
ls.InnerText = "李四";
memberA.AppendChild(zs);
memberA.AppendChild(ls);
XmlElement memberB = xmlDoc.CreateElement("MEMBER");
memberB.SetAttribute("AGE", ">=35");
memberB.SetAttribute("SEX", "MALE");
XmlElement ww = xmlDoc.CreateElement("NAME");
ww.InnerText = "王五";
XmlElement zl = xmlDoc.CreateElement("NAME");
zl.InnerText = "赵六";
memberB.AppendChild(ww);
memberB.AppendChild(zl);
memberlist.AppendChild(memberA);
memberlist.AppendChild(memberB);
root.AppendChild(memberlist);
xmlDoc.Save(xmlpath);
效果如下:
<?xml version="1.0" encoding="UTF-8"?>
c#代码如下:
xmlDoc.Load(xmlpath);
XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
XmlNodeList nodelist=memberlist.ChildNodes;
// XmlNodeList nodelist=xmlDoc.GetElementsByTagName("MEMBER");
foreach (XmlNode node in nodelist)
{
if (node.Attributes["AGE"].InnerText.ToString().Equals(">=29"))
{
node.ChildNodes[0].InnerText = "张三";
node.ChildNodes[1].InnerText = "李四";
break;
}
}
xmlDoc.Save(xmlpath);
MessageBox.Show("保存成功");
if (File.Exists(xmlpath))
{
xmlDoc.Load(xmlpath);
XmlNode memberlist = xmlDoc.SelectSingleNode("ROOT/MEMBERLIST");
XmlElement member = xmlDoc.CreateElement("MEMBER");
member.SetAttribute("AGE", "<29");
member.SetAttribute("SEX", "MAIL");
XmlElement lq = xmlDoc.CreateElement("NAME");
lq.InnerText = "六七";
member.AppendChild(lq);
memberlist.AppendChild(member);
xmlDoc.Save(xmlpath);
MessageBox.Show("添加成功");
}
else
{
MessageBox.Show("文件不存在");
}
相关文章
- C#如何调用其他.config配置文件,就是2个乃至3个以上的config文件
- Covariance and Contravariance in C#的搜索条件
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- .net 反射访问私有变量和私有方法 如何创建C# Closure ? C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密 C#中的foreach和yield 数组为什么可以使用linq查询 C#中的 具名参数 和 可选参数 显示实现接口 异步CTP(Async CTP)为什么那样工作? C#多线程基础,适合新手了解 C#加快Bitmap的访问速度 C#实现对图片文件的压
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- C# 性能优化 之 秒表 Stopwatch。 Dapper一个和petapoco差不多的轻量级ORM框架
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能
- c# 执行批处理文件
- C#【通用方法】创建csv文件的方法
- C#【必备技能篇】Winform实现多语言切换(.resx文件的应用)
- C#,卡特兰数(Catalan number,明安图数)的算法源代码
- C#计算不规则多边形关系
- C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
- C#调用windows api 实现打印机控制
- c# 静态变量
- C# - *.dll vs *.lib (动态链接库 vs 静态链接库)
- win7 C# 利用windows自带语音类库读书 spvoice,电脑端 读书-摘自网络
- C# 文件读写系列三
- [转]C# 中的.pdb/ .vshost.exe/ .vshost.exe.manifest文件讨论
- C#-ILookup 初始化
- C# 窗体加载假死,异步刷新总结
- C# Xamarin移动开发项目实战篇
- C#-Linq-Join两个DataTable