Saya selalu ingin menulis kelas untuk mengoperasikan file XML. Saya mencari online hari ini dan menemukan kelas serupa yang telah saya tulis. Saya memperluas dan memodifikasinya, dan akhirnya menjadi kode berikut untuk referensi pemula.
//
Peristiwa XML digunakan di kelas ini. Pencarian node di kelas ini harus menggunakan ekspresi xpath: [Mempelajari xpath] XPath The tutorial paling populer +
1menggunakan Sistem;
2menggunakan System.Xml;
3menggunakan Sistem.Web;
4namespaceberuntung
5{
6 /**//// <ringkasan>
7 /// Ekspresi XPATH harus digunakan untuk mendapatkan node yang sesuai
8 /// Untuk informasi tentang xpath, lihat:
9 /// </ringkasan>
10 MyXml kelas publik
11 {
12 Variabel#Variabel Wilayah
13 /**//// <ringkasan>
14 ///Jenis jalur tempat file xml berada
15 /// </ringkasan>
16 /// <keterangan>Jenis jalur tempat file xml berada</keterangan>
17 enum publik enumXmlPathType
18 {
19 /**//// <ringkasan>
20 /// Jalur absolut
21 /// </ringkasan>
22Jalur Mutlak,
23 /**//// <ringkasan>
24 /// jalur virtual
25 /// </ringkasan>
26Jalur Virtual
27}
28
29 string pribadi xmlFilePath;
30 enumXmlPathType xmlFilePathType pribadi;
31 XmlDocument pribadi xmlDoc = XmlDocument baru();
32 #wilayah akhir
33
34
35 properti#properti wilayah
36 /**//// <ringkasan>
37 /// Jalur berkas
38 /// </ringkasan>
39 /// <keterangan>Jalur file</keterangan>
40 string publik XmlFilePath
41 {
42 dapatkan
43 {
44 kembalikan ini.xmlFilePath;
45 }
46 set
47 {
48 xmlFilePath = nilai;
49
50 }
51 }
52
53 /**//// <ringkasan>
54 /// Jenis jalur file
55 /// </ringkasan>
56 enumXmlPathType publik XmlFilePathTyp
57 {
58 set
59 {
60 xmlFilePathType = nilai;
61 }
62 }
63 #wilayah akhir
64
65 Konstruktor #konstruktor wilayah
66 /**//// <ringkasan>
67 ///
68 /// </ringkasan>
69 /// <param nama="tempXmlFilePath"></param>
70 MyXml publik(string tempXmlFilePath)
71 {
72 //
73 // TODO: Tambahkan logika konstruktor di sini
74 //
75
76 this.xmlFilePathType = enumXmlPathType.VirtualPath;
77 ini.xmlFilePath = tempXmlFilePath;
78 DapatkanXmlDokumen();
79 //xmlDoc.Beban(xmlFilePath);
80}
81
82 /**//// <ringkasan>
83 /// Konstruktor
84 /// </ringkasan>
85 /// <param name="tempXmlFilePath">Jalur file</param>
86 /// <param name="tempXmlFilePathType">Ketik</param>
87 MyXml publik( string tempXmlFilePath , enumXmlPathType tempXmlFilePathType )
88 {
89 //
90 // TODO: Tambahkan logika konstruktor di sini
91 //
92 this.xmlFilePathType = tempXmlFilePathType;
93 ini.xmlFilePath = tempXmlFilePath;
94 GetXmlDokumen();
95 }
96 #wilayah akhir
97
98
99 /**////<ringkasan>
100 ///Dapatkan kelas entitas XmlDocument
101 ///</ringkasan>
102 /// <returns>Contoh xmldocument dari file deskripsi XML yang ditentukan</returns>
103 XmlDocument pribadi GetXmlDocument()
104 {
105 dokumen XmlDocument=null;
106
107 jika( this.xmlFilePathType == enumXmlPathType.AbsolutePath )
108 {
109 dokumen = GetXmlDocumentFromFile( xmlFilePath );
110 }
111 lain jika( this.xmlFilePathType == enumXmlPathType.VirtualPath )
112 {
113 doc = GetXmlDocumentFromFile(HttpContext.Current.Server.MapPath(xmlFilePath));
114 }
115 dokumen pengembalian;
116 }
117
118 XmlDocument GetXmlDocumentFromFile pribadi (string tempXmlFilePath)
119 {
120 string xmlFileFullPath = tempXmlFilePath;
121 xmlDoc.Beban(xmlFileFullPath);
122 //Mendefinisikan pemrosesan event
123 xmlDoc.NodeChanged += new XmlNodeChangedEventHandler(ini.nodeUpdateEvent);
124 xmlDoc.NodeInserted += new XmlNodeChangedEventHandler(ini.nodeInsertEvent);
125 xmlDoc.NodeRemoved += new XmlNodeChangedEventHandler(ini.nodeDeleteEvent);
126 mengembalikan xmlDoc;
127 }
128
129 Baca nilai atribut yang ditentukan dari node yang ditentukan #region Baca nilai atribut yang ditentukan dari node yang ditentukan
130 /**//// <ringkasan>
131 /// Fungsi:
132 /// Membaca nilai atribut yang ditentukan dari node yang ditentukan
133 /// </ringkasan>
134 /// <param name="strNode">Nama simpul</param>
135 /// <param name="strAttribute">Atribut node ini</param>
136 /// <pengembalian></pengembalian>
137 string publik GetXmlNodeAttributeValue(string strNode,string strAttribute)
138 {
139 string strKembali = "";
140 mencoba
141 {
142 //Mendapatkan node sesuai dengan jalur yang ditentukan
143 XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
144 jika (!(xmlNode==null))
145 {//Dapatkan atribut node dan keluarkan nilai atribut yang diperlukan
146 XmlAttributeCollection xmlAttr = xmlNode.Attributes;
147
148 untuk(int i=0;i<xmlAttr.Hitungan; i++)
149 {
150 if (xmlAttr.Item(i).Nama == strAttribute)
151 {
152 strReturn = xmlAttr.Item(i).Nilai;
153 istirahat;
154 }
155 }
156 }
157 }
158 tangkapan(XmlException xmle)
159 {
160 lemparan xmle;
161 }
162 kembalikan strReturn;
163 }
164 #wilayah akhir
165
166
167 Baca nilai node yang ditentukan #region Baca nilai node yang ditentukan
168 /**//// <ringkasan>
169 /// Fungsi:
170 /// Membaca nilai dari node yang ditentukan
171 /// </ringkasan>
172 /// <param name="strNode">Nama simpul</param>
173 /// <pengembalian></pengembalian>
174 string publik GetXmlNodeValue(string strNode)
175 {
176 string strReturn = String.Kosong;
177
178 mencoba
179 {
180 //Mendapatkan node berdasarkan jalur
181 XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
182 jika (!(xmlNode==null))
183 strReturn = xmlNode.InnerText;
184}
185 tangkapan(XmlException xmle)
186 {
187 lemparan xmle;
188 }
189 kembalikan strKembali;
190 }
191 #wilayah akhir
192
193 Tetapkan nilai simpul #region Tetapkan nilai simpul
194 /**//// <ringkasan>
195 /// Fungsi:
196 /// Tetapkan nilai simpul
197 /// </ringkasan>
198 /// <param name="strNode">Nama simpul</param>
199 /// <param name="newValue">Nilai simpul</param>
200 kekosongan publik SetXmlNodeValue(string xmlNodePath,string xmlNodeValue)
201 {
202 mencoba
203 {
204 //Anda dapat membayar secara batch untuk node yang memenuhi ketentuan.
205 XmlNodeList xmlNode=ini.xmlDoc.SelectNodes(xmlNodePath);
206 jika (!(xmlNode==null))
207 {
208 foreach(XmlNode xn di xmlNode)
209 {
210 xn.InnerText = xmlNodeValue;
211 }
212 }
213 /**//*
214 * Mendapatkan node sesuai jalur yang ditentukan
215 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath);
216 //Tetapkan nilai simpul
217 jika (!(xmlNode==null))
218 xmlNode.InnerText = xmlNodeValue;*/
219 }
220 tangkapan(XmlException xmle)
221 {
222 lemparan xmle;
223 }
224 }
225 #wilayah akhir
226
227 Tetapkan nilai atribut simpul #region Tetapkan nilai atribut simpul
228 /**//// <ringkasan>
229 /// Fungsi:
230 ///Menetapkan nilai atribut node
231 /// </ringkasan>
232 /// <param name="xmlNodePath">Nama simpul</param>
233 /// <param name="xmlNodeAttribute">Nama atribut</param>
234 /// <param name="xmlNodeAttributeValue">Nilai atribut</param>
235 kekosongan publik SetXmlNodeAttributeValue(string xmlNodePath,string xmlNodeAttribute,string xmlNodeAttributeValue)
236 {
237 mencoba
238 {
239 //Anda dapat membayar atribut node yang memenuhi syarat secara berkelompok
240 XmlNodeList xmlNode=ini.xmlDoc.SelectNodes(xmlNodePath);
241 jika (!(xmlNode==null))
242 {
243 foreach(XmlNode xn di xmlNode)
244 {
245 XmlAttributeCollection xmlAttr = xn.Atribut;
246 untuk(int i=0; i<xmlAttr.Hitungan; i++)
247 {
248 jika ( xmlAttr.Item(i).Nama == xmlNodeAttribute )
249 {
250 xmlAttr.Item(i).Value = xmlNodeAttributeValue;
251 istirahat;
252 }
253 }
254 }
255 }
256 /**//*Simpul tunggal
257 //Mendapatkan node sesuai dengan jalur yang ditentukan
258 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath);
259 jika (!(xmlNode==null))
260 {//Dapatkan atribut node dan keluarkan nilai atribut yang diperlukan
261 XmlAttributeCollection xmlAttr = xmlNode.Atribut;
262 untuk(int i=0; i<xmlAttr.Hitungan; i++)
263 {
264 jika ( xmlAttr.Item(i).Nama == xmlNodeAttribute )
265 {
266 xmlAttr.Item(i).Value = xmlNodeAttributeValue;
267 istirahat;
268 }
269 }
270 }
271*/
272 }
273 tangkapan(XmlException xmle)
274 {
275 lemparan xmle;
276 }
277 }
278 #wilayah akhir
279
280 Tambahkan #tambah wilayah
281 /**//// <ringkasan>
282 /// Dapatkan elemen root dari file XML
283 /// </ringkasan>
284 XmlNode publik GetXmlRoot()
285 {
286 mengembalikan xmlDoc.DocumentElement;
287 }
288
289 /**//// <ringkasan>
290 /// Tambahkan simpul induk di bawah simpul akar
291 /// </ringkasan>
292 kekosongan publik AddParentNode(string parentNode)
293 {
294 mencoba
295 {
296 XmlNode root = GetXmlRoot();
297 XmlNode parentXmlNode = xmlDoc.CreateElement(parentNode);
298 root.AppendChild(parentXmlNode);
299 }
300 tangkapan (XmlException xmle)
301 {
302 lemparan xmle;
303 }
304 }
305
306 /**//// <ringkasan>
307 /// Menyisipkan simpul anak ke dalam simpul induk yang sudah ada
308 /// </ringkasan>
309 /// <param name="parentNodePath">Node induk</param>
310 /// <param name="childNodePath">nama titik byte</param>
311 public void AddChildNode(string parentNodePath,string nama simpul anak)
312 {
313 mencoba
314 {
315 XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath);
316 if(!((parentXmlNode)==null))//Jika node ini ada
317 {
318 XmlNode childXmlNode = xmlDoc.CreateElement(namanode anak);
319 parentXmlNode.AppendChild( childXmlNode );
320 }
321 else{//Jika tidak ada, tambahkan node induk
322 //ini.GetXmlRoot().AppendChild(childXmlNode);
323 }
324
325 }
326 tangkapan(XmlException xmle)
327 {
328 lemparan xmle;
329 }
330 }
331
332 /**//// <ringkasan>
333 /// Menambahkan atribut ke sebuah node
334 /// </ringkasan>
335 /// <param name="NodePath">Jalur simpul</param>
336 /// <param name="NodeAttribute">Nama atribut</param>
337 public void AddAttribute(string NodePath, string NodeAttribute)
338 {
339 privateAddAttribute(NodePath,NodeAttribute,"");
340 }
341 /**//// <ringkasan>
342 ///
343 /// </ringkasan>
344 /// <param nama="NodePath"></param>
345 /// <param nama="NodeAttribute"></param>
346 /// <param nama="NodeAttributeValue"></param>
347 kekosongan pribadi privateAddAttribute(string NodePath, string NodeAttribute,string NodeAttributeValue)
348 {
349 mencoba
350 {
351 XmlNode nodePath = xmlDoc.SelectSingleNode(NodePath);
352 jika (!(nodePath==null))
353 {
354 XmlAttribute nodeAttribute = ini.xmlDoc.CreateAttribute(NodeAttribute);
355 nodeAttribute.Value=NodeAttributeValue;
356 nodePath.Attributes.Append(nodeAttribute);
357 }
358 }
359 tangkapan(XmlException xmle)
360 {
361 lemparan xmle;
362 }
363 }
364 /**//// <ringkasan>
365 /// Tambahkan atribut ke node dan nilai pembayaran
366 /// </ringkasan>
367 /// <param name="NodePath">Node</param>
368 /// <param name="NodeAttribute">Nama atribut</param>
369 /// <param name="NodeAttributeValue">Nilai atribut</param>
370 public void AddAttribute(string NodePath, string NodeAttribute,string NodeAttributeValue)
371 {
372 privateAddAttribute(NodePath,NodeAttribute,NodeAttributeValue);
373 }
374 #wilayah akhir
375
376 Hapus #wilayah Hapus
377 /**//// <ringkasan>
378 /// Menghapus atribut node
379 /// </ringkasan>
380 /// <param name="NodePath">ekspresi xpath di mana node berada</param>
381 /// <param name="NodeAttribute">Nama atribut</param>
382 public void DeleteAttribute(string NodePath, string NodeAttribute)
383 {
384 XmlNodeList nodePath =ini.xmlDoc.SelectNodes(NodePath);
385 jika (!(nodePath==null))
386 {
387 foreach (XmlNode tempxn di nodePath)
388 {
389 XmlAttributeCollection xmlAttr = tempxn.Atribut;
390 untuk(int i=0; i<xmlAttr.Count; i++)
391 {
392 if (xmlAttr.Item(i).Nama == NodeAttribute)
393 {
394 tempxn.Atribut.RemoveAt(i);
395 istirahat;
396 }
397 }
398 }
399 }
400 }
401
402 /**//// <ringkasan>
403 /// Menghapus sebuah node ketika nilai atributnya sama dengan nilai yang diberikan
404 /// </ringkasan>
405 /// <param name="NodePath">ekspresi xpath di mana node berada</param>
406 /// <param name="NodeAttribute">Atribut</param>
407 /// <param name="NodeAttributeValue">nilai</param>
408 public void DeleteAttribute( string NodePath, string NodeAttribute, string NodeAttributeValue)
409 {
410 XmlNodeList nodePath =ini.xmlDoc.SelectNodes(NodePath);
411 jika (!(nodePath==null))
412 {
413 foreach (XmlNode tempxn di nodePath)
414 {
415 XmlAttributeCollection xmlAttr = tempxn.Atribut;
416 untuk(int i=0; i<xmlAttr.Count; i++)
417 {
418 if (xmlAttr.Item(i).Nama == NodeAttribute && xmlAttr.Item(i).Value==NodeAttributeValue)
419 {
420 tempxn.Atribut.RemoveAt(i);
421 istirahat;
422 }
423 }
424 }
425 }
426 }
427 /**//// <ringkasan>
428 /// Hapus simpul
429 /// </ringkasan>
430 /// <param nama="tempXmlNode"></param>
431 /// <keterangan></keterangan>
432 public void DeleteXmlNode(string tempXmlNode){
433 XmlNodeList nodePath =ini.xmlDoc.SelectNodes(tempXmlNode);
434 jika (!(nodePath==null))
435 {
436 foreach(XmlNode xn di nodePath)
437 {
438 xn.ParentNode.RemoveChild(xn);
439 }
440 }
441 }
442
443 #wilayah akhir
444
445 Peristiwa Dokumen XML#peristiwa Peristiwa Dokumen XML
446 /**//// <ringkasan>
447 ///
448 /// </ringkasan>
449 /// <param nama="src"></param>
450 /// <param nama="args"></param>
451 kekosongan pribadi nodeInsertEvent(Objek src, XmlNodeChangedEventArgs args)
452 {
453 //Simpan pengaturan
454 SimpanXmlDokumen();
455 }
456 /**//// <ringkasan>
457 ///
458 /// </ringkasan>
459 /// <param nama="src"></param>
460 /// <param nama="args"></param>
461 private void nodeDeleteEvent(Objek src, XmlNodeChangedEventArgs args)
462 {
463 //Simpan pengaturan
464 SimpanXmlDokumen();
465 }
466 /**//// <ringkasan>
467 ///
468 /// </ringkasan>
469 /// <param nama="src"></param>
470 /// <param nama="args"></param>
471 kekosongan pribadi nodeUpdateEvent(Objek src, XmlNodeChangedEventArgs args)
472 {
473 //Simpan pengaturan
474 SimpanXmlDokumen();
475 }
476 #wilayah akhir
477
478 Simpan file XML #region Simpan file XML
479 /**//// <ringkasan>
480 /// Fungsi:
481 /// Simpan berkas XML
482 ///
483 /// </ringkasan>
484 kekosongan publik SaveXmlDocument()
485 {
486 mencoba
487 {
488 //Simpan hasil pengaturan
489 jika( this.xmlFilePathType == enumXmlPathType.AbsolutePath )
490 {
491 Savexml(xmlFilePath);
492 }
493 lain jika( this.xmlFilePathType == enumXmlPathType.VirtualPath )
494 {
495 Savexml(HttpContext.Saat ini.Server.MapPath(xmlFilePath));
496 }
497 }
498 tangkapan(XmlException xmle)
499 {
500 lemparan xmle;
501 }
502 }
503
504 /**//// <ringkasan>
505 /// Fungsi:
506 /// Simpan berkas XML
507 /// </ringkasan>
508 public void SaveXmlDocument(string tempXMLFilePath)
509 {
510 mencoba
511 {
512 //Simpan hasil pengaturan
513 Savexml(tempXMLFilePath);
514 }
515 tangkapan(XmlException xmle)
516 {
517 melempar xmle;
518 }
519 }
520 /**//// <ringkasan>
521 ///
522 /// </ringkasan>
523 /// <param nama="jalur file"></param>
524 private void Savexml (jalur file string)
525 {
526 xmlDoc.Simpan(jalur file);
527 }
528
529 #wilayah akhir
530
531 }
532
533}
534
535