C#操作XML的完整例子——XmlDocument篇

这是一个用c#控制台程序下,  用XmlDocument 进行XML操作的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门.net XML操作的朋友参考和学习。

 

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

 

你可能感兴趣的:(document)