C#中XML的基本操作

我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。

已知有一个XML文件(bookstore.xml)如下:

1<bookstore>
2<book genre="fantasy" isbn="2-3631-4">
3<title>Oberon's Legacy</title>
4<author>Corets, Eva</author>
5<price>5.95</price>
6</book>
7</bookstore>

** 1、往

  1<bookstore>节点中插入一个<book>节点:  **
  2
  3XmlDocument xmlDoc=new XmlDocument();   
  4xmlDoc.Load("bookstore.xml"); 
  5
  6XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>   
  7XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点   
  8xe1.SetAttribute("genre","李赞红");//设置该节点genre属性   
  9xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 
 10
 11XmlElement xesub1=xmlDoc.CreateElement("title");   
 12xesub1.InnerText="CS从入门到精通";//设置文本节点   
 13xe1.AppendChild(xesub1);//添加到<book>节点中   
 14XmlElement xesub2=xmlDoc.CreateElement("author");   
 15xesub2.InnerText="候捷";   
 16xe1.AppendChild(xesub2);   
 17XmlElement xesub3=xmlDoc.CreateElement("price");   
 18xesub3.InnerText="58.3";   
 19xe1.AppendChild(xesub3); 
 20
 21root.AppendChild(xe1);//添加到<bookstore>节点中   
 22xmlDoc.Save("bookstore.xml"); 
 23
 24//=============================================== 
 25
 26结果为: 
 27
 28<?xml version="1.0" encoding="gb2312"?>
 29<bookstore>
 30<book genre="fantasy" isbn="2-3631-4">
 31<title>Oberon's Legacy</title>
 32<author>Corets, Eva</author>
 33<price>5.95</price>
 34</book>
 35<book genre="李赞红" isbn="2-3631-4">
 36<title>CS从入门到精通</title>
 37<author>候捷</author>
 38<price>58.3</price>
 39</book>
 40</bookstore>
 41
 42**2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点 <author>的文本修改为“亚胜”。 **
 43
 44XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点   
 45foreach(XmlNode xn in nodeList)//遍历所有子节点   
 46{   
 47XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型   
 48if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”   
 49{   
 50xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红” 
 51
 52XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点   
 53foreach(XmlNode xn1 in nls)//遍历   
 54{   
 55XmlElement xe2=(XmlElement)xn1;//转换类型   
 56if(xe2.Name=="author")//如果找到   
 57{   
 58xe2.InnerText="亚胜";//则修改   
 59break;//找到退出来就可以了   
 60}   
 61}   
 62break;   
 63}   
 64} 
 65
 66xmlDoc.Save("bookstore.xml");//保存。 
 67
 68//================================================== 
 69
 70最后结果为: 
 71
 72<?xml version="1.0" encoding="gb2312"?>
 73<bookstore>
 74<book genre="fantasy" isbn="2-3631-4">
 75<title>Oberon's Legacy</title>
 76<author>Corets, Eva</author>
 77<price>5.95</price>
 78</book>
 79<book genre="update李赞红" isbn="2-3631-4">
 80<title>CS从入门到精通</title>
 81<author>亚胜</author>
 82<price>58.3</price>
 83</book>
 84</bookstore>
 85
 86**3、删除 <book genre="fantasy" isbn="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" isbn="2-3631-4">节点。 **
 87
 88XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; 
 89
 90foreach(XmlNode xn in xnl)   
 91{   
 92XmlElement xe=(XmlElement)xn;   
 93if(xe.GetAttribute("genre")=="fantasy")   
 94{   
 95xe.RemoveAttribute("genre");//删除genre属性   
 96}   
 97else if(xe.GetAttribute("genre")=="update李赞红")   
 98{   
 99xe.RemoveAll();//删除该节点的全部内容   
100}   
101}   
102xmlDoc.Save("bookstore.xml"); 
103
104//===========================================   
105最后结果为: 
106
107<?xml version="1.0" encoding="gb2312"?>
108<bookstore>
109<book isbn="2-3631-4">
110<title>Oberon's Legacy</title>
111<author>Corets, Eva</author>
112<price>5.95</price>
113</book>
114<book>
115</book>
116</bookstore>
117
118**4、显示所有数据。**
119
120XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); 
121
122XmlNodeList xnl=xn.ChildNodes;   
123  
124foreach(XmlNode xnf in xnl)   
125{   
126XmlElement xe=(XmlElement)xnf;   
127Console.WriteLine(xe.GetAttribute("genre"));//显示属性值   
128Console.WriteLine(xe.GetAttribute("ISBN")); 
129
130XmlNodeList xnf1=xe.ChildNodes;   
131foreach(XmlNode xn2 in xnf1)   
132{   
133Console.WriteLine(xn2.InnerText);//显示子节点点文本   
134}   
135}</book></book></author></bookstore></book></book></bookstore></book></bookstore>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus