In. using dataset in net to obtain XML data and save XML data is very simple and easy to use, but there are some complicated XML structures. Using dataset for operations is not as easy as using xmldocument, therefore, this article uses xmldocument in C # to perform basic operations such as XML query, adding, modifying, deleting, and saving.
See the example below:
XML file: Books. xml
1 <? XML version = "1.0" encoding = "UTF-8"?>
2 <books>
3 <book>
4 <Name> Harry Potter </Name>
5 <price> 10 </price>
6 <memo> This is a nice book. </Memo>
7 </book>
8 <book id = "B02">
9 <Name> Romance of the Three Kingdoms </Name>
10 <price> 10 </price>
11 <memo> one of the four famous books. </Memo>
12 </book>
13 <book id = "b03">
14 <Name> region </Name>
15 <price> 6 </price>
16 <memo> is one of the four famous books. </Memo>
17 </book>
18 <book id = "b04">
19 <Name> redhouse </Name>
20 <price> 5 </price>
21 <memo> is one of the four famous books. </Memo>
22 </book>
23 </books>
Below is the C # code:
1 eusing system;
2 using system. Collections. Generic;
3 using system. text;
4 using system. xml;
5
6 namespace 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 // --- create a new book ----
20 thebook = xmldoc. createelement ("book ");
21 theelem = xmldoc. createelement ("name ");
22 theelem. innertext = "new book ";
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 = "better book. ";
31 thebook. appendchild (theelem );
32 root. appendchild (thebook );
33 console. Out. writeline ("--- create a new book ----");
34 console. Out. writeline (root. outerxml );
35 // --- create a new book ----
36
37 // --- make some changes to Harry Potter. ----
38 // --- query for Harry Potter ----
39 thebook = (xmlelement) root. selectsinglenode ("/books/book [name = ''harry Potter''] ");
40 console. Out. writeline ("--- find Harry Potter ----");
41 console. Out. writeline (thebook. outerxml );
42 // --- modify the price of this book at this time -----
43 thebook. getelementsbytagname ("price"). Item (0). innertext = "15"; // getelementsbytagname returns nodelist, so keep up with item (0)
44 console. Out. writeline ("--- modify the price of this book at this time ----");
45 console. Out. writeline (thebook. outerxml );
46 // --- you also want to add an attribute ID with the value B01 ----
47 thebook. setattribute ("ID", "B01 ");
48 console. Out. writeline ("--- you also want to add an attribute ID with the value B01 ----");
49 console. Out. writeline (thebook. outerxml );
50 // --- modify Harry Potter. ----
51
52 // --- delete all books whose prices are less than 10 ----
53 thebook = (xmlelement) root. selectsinglenode ("/books/book [@ ID = ''b02'']");
54 console. Out. writeline ("--- use the ID attribute to delete the book" Romance of Three Kingdoms ----");
55 console. Out. writeline (thebook. outerxml );
56 thebook. parentnode. removechild (thebook );
57 console. Out. writeline ("--- XML after deletion ----");
58 console. Out. writeline (xmldoc. outerxml );
59
60 // --- delete all books whose prices are less than 10 ----
61 xmlnodelist somebooks = root. selectnodes ("/books/book [price <10]");
62 console. Out. writeline ("--- delete all books with prices lower than 10 ---");
63 console. Out. writeline ("--- eligible books include" 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 after deletion ----");
70 console. Out. writeline (xmldoc. outerxml );
71
72 xmldoc. Save ("books. xml"); // save it to books. xml
73
74 console. In. Read ();
75}
76 catch (exception E)
77 {
78 console. Out. writeline (E. Message );
79}
80}
81}
82}
The above C # code has comments, which are easy to understand.