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

posted @ 2018-10-16 13:28  旭_东  阅读(281)  评论(0编辑  收藏  举报