C#使用XmlDocument操作XML进行查询、增加、修改、删除、保存应用的实例

在.NET中使用DataSet来获取XML数据与保存XML数据很简单,很好用,不过有一些复杂点的XML结构,使用DataSet来操作就没有 XmlDocument来操作这么好用了,所以本文在C#使用XmlDocument来操作XML的查询、增加、修改、删除、保存的基本操作

下面看实例:

=======================================================

XML文件:books.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<books> 3 <book> 4 <name>哈里波特</name> 5 <price>10</price> 6 <memo>这是一本很好看的书。</memo> 7 </book> 8 <book id="B02"> 9 <name>三国演义</name> 10 <price>10</price> 11 <memo>四大名著之一。</memo> 12 </book> 13 <book id="B03"> 14 <name>水浒</name> 15 <price>6</price> 16 <memo>四大名著之一。</memo> 17 </book> 18 <book id="B04"> 19 <name>红楼</name> 20 <price>5</price> 21 <memo>四大名著之一。</memo> 22 </book> 23</books>

 

C#代码:

1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.Xml; 5 6namespace TestXml 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 XmlElement theBook = null, theElem = null, root = null; 13 XmlDocument xmldoc = new XmlDocument(); 14 try 15 { 16 xmldoc.Load("Books.xml"); 17 root = xmldoc.DocumentElement; 18 19 //--- 新建一本书开始 ---- 20 theBook = xmldoc.CreateElement("book"); 21 theElem = xmldoc.CreateElement("name"); 22 theElem.InnerText = "新书"; 23 theBook.AppendChild(theElem); 24 25 theElem = xmldoc.CreateElement("price"); 26 theElem.InnerText = "20"; 27 theBook.AppendChild(theElem); 28 29 theElem = xmldoc.CreateElement("memo"); 30 theElem.InnerText = "新书更好看。"; 31 theBook.AppendChild(theElem); 32 root.AppendChild(theBook); 33 Console.Out.WriteLine("--- 新建一本书开始 ----"); 34 Console.Out.WriteLine(root.OuterXml); 35 //--- 新建一本书完成 ---- 36 37 //--- 下面对《哈里波特》做一些修改。 ---- 38 //--- 查询找《哈里波特》---- 39 theBook = (XmlElement)root.SelectSingleNode("/books/book[name=''哈里波特'']"); 40 Console.Out.WriteLine("--- 查找《哈里波特》 ----"); 41 Console.Out.WriteLine(theBook.OuterXml); 42 //--- 此时修改这本书的价格 ----- 43 theBook.GetElementsByTagName("price").Item(0).InnerText = "15";//getElementsByTagName返回的是NodeList,所以要跟上item(0) 44 Console.Out.WriteLine("--- 此时修改这本书的价格 ----"); 45 Console.Out.WriteLine(theBook.OuterXml); 46 //--- 另外还想加一个属性id,值为B01 ---- 47 theBook.SetAttribute("id", "B01"); 48 Console.Out.WriteLine("--- 另外还想加一个属性id,值为B01 ----"); 49 Console.Out.WriteLine(theBook.OuterXml); 50 //--- 对《哈里波特》修改完成。 ---- 51 52 //--- 再将所有价格低于10的书删除 ---- 53 theBook = (XmlElement)root.SelectSingleNode("/books/book[@id=''B02'']"); 54 Console.Out.WriteLine("--- 要用id属性删除《三国演义》这本书 ----"); 55 Console.Out.WriteLine(theBook.OuterXml); 56 theBook.ParentNode.RemoveChild(theBook); 57 Console.Out.WriteLine("--- 删除后的XML ----"); 58 Console.Out.WriteLine(xmldoc.OuterXml); 59 60 //--- 再将所有价格低于10的书删除 ---- 61 XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]"); 62 Console.Out.WriteLine("--- 再将所有价格低于10的书删除 ---"); 63 Console.Out.WriteLine("--- 符合条件的书有 " someBooks.Count "本。 ---"); 64 65 for (int i = 0; i < someBooks.Count; i ) 66 { 67 someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i)); 68 } 69 Console.Out.WriteLine("--- 删除后的XML ----"); 70 Console.Out.WriteLine(xmldoc.OuterXml); 71 72 xmldoc.Save("books.xml");//保存到books.xml 73 74 Console.In.Read(); 75 } 76 catch (Exception e) 77 { 78 Console.Out.WriteLine(e.Message); 79 } 80 } 81 } 82} 

 

 

=======================================================

 

上面C#代码都有注释,很简单就看明白了。

 

 

 

 

本文转载地址:http://www.xueit.com/html/2009-12-23/21-61329714531.html

 

 

 

 

你可能感兴趣的:(exception,xml,C#,null,encoding,dataset)