欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

XML操作类

程序员文章站 2022-06-22 11:35:59
生成与对象一致的XML ......
 1 using system;
 2 using system.collections.generic;
 3 using system.io;
 4 using system.reflection;
 5 using system.text;
 6 using system.xml;
 7 
 8 namespace commonlib
 9 {
10     public class xmlhelper
11     {
12         public xmlhelper()
13         {
14 
15         }
16 
17         public void create<t>(string xmlpath, list<t> updatexmls)
18         {
19             xmldocument document = new xmldocument();
20             type type = typeof(t);
21             document.appendchild(document.createxmldeclaration("1.0", "utf-8", null));
22             xmlelement root = document.createelement(type.name + "collection");
23             propertyinfo[] properties = type.getproperties();
24             foreach (var updatexml in updatexmls)
25             {
26                 xmlelement parentelememt = document.createelement(type.name);
27                 foreach (propertyinfo property in properties)
28                 {
29                     xmlelement element = document.createelement(property.name);
30                     element.innertext = updatexml.getpropertyvalue(property).tostring();
31                     parentelememt.appendchild(element);
32                 }
33                 root.appendchild(parentelememt);
34             }
35             document.appendchild(root);
36             document.save(xmlpath);
37         }
38 
39         public list<t> read<t>(string updatexml) where t : new()
40         {
41             xmldocument document = new xmldocument();
42             document.load(updatexml);
43             list<t> tlist = new list<t>();
44             foreach (xmlnode node in document.childnodes[1].childnodes)
45             {
46                 t t = new t();
47                 foreach (xmlnode childnode in node.childnodes)
48                 {
49                     t.setpropertyvalue(childnode.name, childnode.innertext);
50                 }
51                 tlist.add(t);
52             }
53             return tlist;
54         }
55 
56 
57         public list<t> readcontext<t>(string context) where t : new()
58         {
59             xmldocument document = new xmldocument();
60             byte[] bytes = encoding.utf8.getbytes(context);
61             memorystream ms = new memorystream(bytes);
62             ms.seek(0, seekorigin.begin);
63             document.load(ms);
64             list<t> tlist = new list<t>();
65             foreach (xmlnode node in document.childnodes[1].childnodes)
66             {
67                 t t = new t();
68                 foreach (xmlnode childnode in node.childnodes)
69                 {
70                     t.setpropertyvalue(childnode.name, childnode.innertext);
71                 }
72                 tlist.add(t);
73             }
74             return tlist;
75         }
76     }
77 }

生成与对象一致的xml