C# 操作Xml
2017-05-24 17:05
155 查看
在我们项目的开发中,会常常对Xml文件进行操作,以下是我总结的几个基本操作的方法:
1、装载Xml文件
2、创建XMl文档
3、读取Xml文档中的数据(PerModel是一个实体类)
4、对Xml文档插入数据
5、修改xml文档数据
6、删除xml文档数据
附完整源码,及运行效果图:
PerModel实体类
运行效果图:
1、装载Xml文件
XmlDocument xmldoc; //装载Xml文件 public void LoadXml() { /* * 1、判断该路径是否存在着Person.xml文件,如不存在则创建 * 2、加载Person.xml */ if (!File.Exists(path)) { CreateFile(); return; } xmldoc = new XmlDocument(); xmldoc.Load(path); }
2、创建XMl文档
//创建xml文件 public void CreateFile() { xmldoc = new XmlDocument(); //1、创建段落声明<?xml version="1.0" encoding="GB2312" standalone="yes"?> XmlDeclaration xDec = xmldoc.CreateXmlDeclaration("1.0", "GB2312", "yes"); xmldoc.AppendChild(xDec); //2、创建根节点Persons XmlNode rootNode = xmldoc.CreateElement("Persons"); xmldoc.AppendChild(rootNode); xmldoc.Save(path); }
3、读取Xml文档中的数据(PerModel是一个实体类)
public void ReadXml() { LoadXml(); List<PerModel> listper = new List<PerModel>(); //获取根节点Persons XmlNode rootNode = xmldoc.SelectSingleNode("Persons"); //获取所有的Person元素 XmlNodeList xnl = rootNode.ChildNodes; if (xnl != null && xnl.Count > 0) { foreach (XmlNode xn in xnl) { XmlElement xe = (XmlElement)xn; PerModel per = new PerModel();//PerModel是一个实体类 per.Name = xe.GetAttribute("Mz");//获取属性值 per.Sfzjh = xe.GetAttribute("Zjh");//获取属性值 XmlNodeList xnl2 = xe.ChildNodes; per.Age = xnl2.Item(0).InnerText.ToString().Trim(); per.Sex = xnl2.Item(1).InnerText.ToString().Trim(); per.Adress = xnl2.Item(2).InnerText.ToString().Trim(); listper.Add(per); } } dgv.DataSource = null; dgv.DataSource = listper; }
4、对Xml文档插入数据
//新增节点 public void AddNode(string Mz, string Zjh, string Nl, string Xb, string Dz) { LoadXml(); //获取根节点 XmlNode rootNode = xmldoc.SelectSingleNode("Persons"); //创建子节点Person XmlElement pele = xmldoc.CreateElement("Person"); //Person的两个属性Mz ,Zjh pele.SetAttribute("Mz", Mz); pele.SetAttribute("Zjh", Zjh); //创建新元素 Nl XmlElement nlEle = xmldoc.CreateElement("Nl"); nlEle.InnerText = Nl; pele.AppendChild(nlEle); //创建新元素 Xb XmlElement xbEle = xmldoc.CreateElement("Xb"); xbEle.InnerText = Xb; pele.AppendChild(xbEle); //创建新元素 Dz XmlElement dzEle = xmldoc.CreateElement("Dz"); dzEle.InnerText = Dz; pele.AppendChild(dzEle); //添加Person节点 rootNode.AppendChild(pele); xmldoc.Save(path); }
5、修改xml文档数据
public void UpdateXml() { LoadXml(); XmlNode rootNode = xmldoc.SelectSingleNode("//Persons"); XmlElement xe = (XmlElement)rootNode.SelectSingleNode("//Persons/Person[@Zjh='" + dgv.CurrentRow.Cells[1].Value.ToString().Trim() + "']"); xe.SetAttribute("Mz", dgv.CurrentRow.Cells[0].Value.ToString().Trim());//除了修改属性值,也可以通过SetAttribute来增加一个属性 xe.GetElementsByTagName("Nl").Item(0).InnerText = dgv.CurrentRow.Cells[2].Value.ToString().Trim(); xe.GetElementsByTagName("Xb").Item(0).InnerText = dgv.CurrentRow.Cells[3].Value.ToString().Trim(); xe.GetElementsByTagName("Dz").Item(0).InnerText = dgv.CurrentRow.Cells[4].Value.ToString().Trim(); xmldoc.Save(path); }
6、删除xml文档数据
public void DeleteXml() { LoadXml(); XmlNode rootNode = xmldoc.SelectSingleNode("//Persons"); //删除年龄大于5岁小于10岁的人 XmlNodeList xnl = rootNode.SelectNodes("//Persons/Person[Nl<'10' and Nl>'5']"); for (int i = 0; i < xnl.Count; i++) { xnl[i].ParentNode.RemoveChild(xnl[i]); } //删除属性‘Zjh’值为2017052202的节点 XmlNode xn = rootNode.SelectSingleNode("//Persons/Person[@Zjh='2017052202']"); xn.ParentNode.RemoveChild(xn); xmldoc.Save(path); }
附完整源码,及运行效果图:
namespace Test_XML { /// <summary> /// Person实体类 /// </summary> [Serializable] public class PerModel { /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 证件号 /// </summary> public string Sfzjh { get;set;} /// <summary> /// 年龄 /// </summary> public string Age { get; set; } /// <summary> /// 性别 /// </summary> public string Sex { get; set; } /// <summary> /// 家庭地址 /// </summary> public string Adress { get; set; } } }
PerModel实体类
运行效果图:
![](https://images2015.cnblogs.com/blog/826232/201705/826232-20170524170444404-1157377267.png)
相关文章推荐
- 学习C#之SAX方式操作XML文档
- .Net那点事儿系列:C#操作Xml:通过XmlDocument读写Xml文档
- C#操作XML方法集合
- C# XML操作 代码大全
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- xml操作记录--c#
- 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
- 在C#.net中如何操作XML
- ASP.NET和C#中对XML的操作,以及简单的xml与xsl !
- c#操作XML
- C#操作XML文档
- C#中操作XML
- C#操作XML的完整例子——XmlDocument篇
- C# XML基本操作
- C#中对XML的操作
- C#操作XMl-2
- 灰灰虫的家---ADO.NET+DataList+GridView内容详解+C#基础+C#操作XML文件
- .NET下使用C#操作XML文件
- 在C#.net中如何操作XML
- [导入]在C#.net中如何操作XML