<?xml version="1.0" encoding="utf-8"?> <books> <book1> <name>水浒传</name> <author>作者</author> </book1> <Student studentId="10"> <Name>我是学生1</Name> <Sex> <a>男</a> </Sex> <price name="价格" count="1000" /> </Student> </books>
1增
1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Xml; 8 9 namespace ConsoleApplication10 10 { 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 XmlDocument doc = new XmlDocument(); 16 //先判断xml文件是否已经存在,如果存在,就追加;不存在,新建。 17 if(File.Exists("a.xml")) 18 { 19 //存在 20 //先加载进来 21 doc.Load("a.xml"); 22 //获得根节点 23 XmlElement gen= doc.DocumentElement; 24 25 //给根节点添加子节点 26 XmlElement student1 = doc.CreateElement("Student"); 27 //设置标签属性 28 student1.SetAttribute("studentId","10"); 29 gen.AppendChild(student1); 30 //添加子子标签 31 XmlElement name1 = doc.CreateElement("Name"); 32 name1.InnerXml = "我是学生1"; 33 student1.AppendChild(name1); 34 // XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "<a>男</a>"; 35 XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "男"; 36 student1.AppendChild(sex1); 37 } 38 else 39 { 40 //不存在 41 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0","utf-8",null); 42 doc.AppendChild(dec); 43 XmlElement gen = doc.CreateElement("gen"); 44 doc.AppendChild(gen); 45 46 //给根节点添加子节点 47 XmlElement student1 = doc.CreateElement("Student"); 48 //设置标签属性 49 student1.SetAttribute("studentId", "10"); 50 gen.AppendChild(student1); 51 //添加子子标签 52 XmlElement name1 = doc.CreateElement("Name"); 53 name1.InnerXml = "我是学生1"; 54 student1.AppendChild(name1); 55 // XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "<a>男</a>"; 56 XmlElement sex1 = doc.CreateElement("Sex"); sex1.InnerXml = "男"; 57 student1.AppendChild(sex1); 58 } 59 //最终都要保存 60 doc.Save("a.xml"); 61 Console.WriteLine("保存成功"); 62 } 63 } 64 }
2删
1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Xml; 8 9 namespace ConsoleApplication10 10 { 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 16 XmlDocument doc = new XmlDocument(); 17 doc.Load("a.xml"); 18 // doc.RemoveAll();//不行,根节点不允许删除 19 XmlNode gen = doc.DocumentElement; 20 //gen.RemoveAll();//移除根节点下所有的子节点 21 #region 删除一个指定的标签 22 ////寻找指定的节点,注意path格式 23 //XmlNode xn = gen.SelectSingleNode("/books/Student/price[@name=‘价格‘]"); 24 ////获得上面price节点的上节点 25 //XmlNode shangxn = doc.SelectSingleNode("/books/Student"); 26 //shangxn.RemoveChild(xn);//删除方法必须是上一个节点删除下一个节点 27 #endregion 28 29 30 #region 删除一个指定的标签内的属性 31 //寻找指定标签 32 XmlNode xn = gen.SelectSingleNode("/books/Student/price[@name=‘价格‘]"); 33 //删除指定标签内的属性 34 xn.Attributes.RemoveNamedItem("count"); 35 #endregion 36 37 38 doc.Save("a.xml"); 39 Console.WriteLine("删除成功"); 40 Console.ReadLine(); 41 42 43 44 } 45 } 46 }
3查改
1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Xml; 8 9 namespace ConsoleApplication10 10 { 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 #region 普通方法查询 16 // XmlDocument doc = new XmlDocument(); 17 ////获得根节点 18 // XmlElement gen = doc.DocumentElement; 19 // //获得根节点下所有的子节点 20 // XmlNodeList xnl = gen.ChildNodes; 21 // foreach (XmlNode xn in xnl) 22 // { 23 // Console.WriteLine(xn.InnerText);//获取所有子节点的值 24 // //但是如果有属性,就获取不到属性的值 25 // } 26 27 28 // //<Sex><a>男</a></Sex>,只有一个这样的标签 29 // XmlElement items = gen["Sex"];//根据标签查找 30 31 // XmlNodeList xnl2 = items.ChildNodes; 32 // foreach (XmlNode xn in xnl2) 33 // { 34 // Console.WriteLine(xn.Attributes["a"].Value);//得到“男” 35 // } 36 // //最终都要保存 37 // doc.Save("a.xml"); 38 // Console.WriteLine("保存成功"); 39 #endregion 40 41 #region 使用XPath的方式来读取XML文件 42 XmlDocument doc = new XmlDocument(); 43 doc.Load("a.xml"); 44 //获得根节点 45 XmlElement gen = doc.DocumentElement; 46 47 //XmlNode xn = gen.SelectSingleNode("/books/book1/name");// "/根节点/子节点/包裹值得标签" 48 //Console.WriteLine(xn.InnerText); 49 50 XmlNode xn = gen.SelectSingleNode("/books/Student/price[@name=‘价格‘]");// "/根节点/子节点/子节点内的标签[@标签属性=‘属性值‘]" 51 Console.WriteLine(xn.Attributes["count"].Value);//取值 count为标签内属性 52 xn.Attributes["count"].Value = "2000";//修改值 53 54 55 doc.Save("a.xml");//保存 56 Console.ReadKey(); 57 58 #endregion 59 60 61 62 } 63 } 64 }
完!!
原文:http://www.cnblogs.com/wwz-wwz/p/6396796.html