转载地址:http://blog.csdn.net/s98/article/details/140307
我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。
已知有一个XML文件(bookstore.xml)如下:
1 <?xml version="1.0" encoding="gb2312"?> 2 <bookstore> 3 <book genre="fantasy" ISBN="2-3631-4"> 4 <title>Oberon's Legacy</title> 5 <author>Corets, Eva</author> 6 <price>5.95</price> 7 </book> 8 </bookstore>
1、往<bookstore>节点中插入一个<book>节点:
View Code
1 XmlDocument xmlDoc=new XmlDocument(); 2 xmlDoc.Load("bookstore.xml"); 3 XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> 4 XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点 5 xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 6 xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 7 8 XmlElement xesub1=xmlDoc.CreateElement("title"); 9 xesub1.InnerText="CS从入门到精通";//设置文本节点 10 xe1.AppendChild(xesub1);//添加到<book>节点中 11 XmlElement xesub2=xmlDoc.CreateElement("author"); 12 xesub2.InnerText="候捷"; 13 xe1.AppendChild(xesub2); 14 XmlElement xesub3=xmlDoc.CreateElement("price"); 15 xesub3.InnerText="58.3"; 16 xe1.AppendChild(xesub3); 17 18 root.AppendChild(xe1);//添加到<bookstore>节点中 19 xmlDoc.Save("bookstore.xml");
结果为:
View Code
1 <?xml version="1.0" encoding="gb2312"?> 2 <bookstore> 3 <book genre="fantasy" ISBN="2-3631-4"> 4 <title>Oberon's Legacy</title> 5 <author>Corets, Eva</author> 6 <price>5.95</price> 7 </book> 8 <book genre="李赞红" ISBN="2-3631-4"> 9 <title>CS从入门到精通</title> 10 <author>候捷</author> 11 <price>58.3</price> 12 </book> 13 </bookstore>
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
View Code
1 XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 2 foreach(XmlNode xn in nodeList)//遍历所有子节点 3 { 4 XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 5 if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红” 6 { 7 xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红” 8 9 XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 10 foreach(XmlNode xn1 in nls)//遍历 11 { 12 XmlElement xe2=(XmlElement)xn1;//转换类型 13 if(xe2.Name=="author")//如果找到 14 { 15 xe2.InnerText="亚胜";//则修改 16 break;//找到退出来就可以了 17 } 18 } 19 break; 20 } 21 } 22 23 xmlDoc.Save("bookstore.xml");//保存。
最后结果为:
View Code
1 <?xml version="1.0" encoding="gb2312"?> 2 <bookstore> 3 <book genre="fantasy" ISBN="2-3631-4"> 4 <title>Oberon's Legacy</title> 5 <author>Corets, Eva</author> 6 <price>5.95</price> 7 </book> 8 <book genre="update李赞红" ISBN="2-3631-4"> 9 <title>CS从入门到精通</title> 10 <author>亚胜</author> 11 <price>58.3</price> 12 </book> 13 </bookstore>
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
View Code
1 XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; 2 3 foreach(XmlNode xn in xnl) 4 { 5 XmlElement xe=(XmlElement)xn; 6 if(xe.GetAttribute("genre")=="fantasy") 7 { 8 xe.RemoveAttribute("genre");//删除genre属性 9 } 10 else if(xe.GetAttribute("genre")=="update李赞红") 11 { 12 xe.RemoveAll();//删除该节点的全部内容 13 } 14 } 15 xmlDoc.Save("bookstore.xml");
最后结果为:
View Code
1 <?xml version="1.0" encoding="gb2312"?> 2 <bookstore> 3 <book ISBN="2-3631-4"> 4 <title>Oberon's Legacy</title> 5 <author>Corets, Eva</author> 6 <price>5.95</price> 7 </book> 8 <book> 9 </book> 10 </bookstore>
4、显示所有数据。
View Code
1 XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); 2 3 XmlNodeList xnl=xn.ChildNodes; 4 5 foreach(XmlNode xnf in xnl) 6 { 7 XmlElement xe=(XmlElement)xnf; 8 Console.WriteLine(xe.GetAttribute("genre"));//显示属性值 9 Console.WriteLine(xe.GetAttribute("ISBN")); 10 11 XmlNodeList xnf1=xe.ChildNodes; 12 foreach(XmlNode xn2 in xnf1) 13 { 14 Console.WriteLine(xn2.InnerText);//显示子节点点文本 15 } 16 }