1 //XML转换为对象操作类
2
3 //一,XML与Object转换类
4
5 using System.IO;
6 using System.Runtime.Serialization.Formatters.Binary;
7 using System.Text;
8 using System.Xml;
9 using System.Xml.Serialization;
10
11 namespace WebApplication1
12 {
13 public sealed class XMLSerilizable
14 {
15 /// <summary>
16 /// 将object对象序列化成XML
17 /// </summary>
18 /// <typeparam name="T"></typeparam>
19 /// <param name="encoding"></param>
20 /// <returns></returns>
21 public static string ObjectToXML<T>(T t, Encoding encoding)
22 {
23 XmlSerializer ser = new XmlSerializer(t.GetType());
24 using (MemoryStream mem = new MemoryStream())
25 {
26 using (XmlTextWriter writer = new XmlTextWriter(mem, encoding))
27 {
28 XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
29 ns.Add("", "");
30 ser.Serialize(writer, t, ns);
31 return encoding.GetString(mem.ToArray()).Trim();
32 }
33 }
34 }
35
36 /// <summary>
37 /// 将XML反序列化成对象
38 /// </summary>
39 /// <typeparam name="T"></typeparam>
40 /// <param name="source"></param>
41 /// <param name="encoding"></param>
42 /// <returns></returns>
43 public static T XMLToObject<T>(string source, Encoding encoding)
44 {
45 XmlSerializer mySerializer = new XmlSerializer(typeof(T));
46 using (MemoryStream stream = new MemoryStream(encoding.GetBytes(source)))
47 {
48 return (T)mySerializer.Deserialize(stream);
49 }
50 }
51
52 /// <summary>
53 /// 二进制方式序列化对象
54 /// </summary>
55 /// <param name="testUser"></param>
56 public static string Serialize<T>(T obj)
57 {
58 MemoryStream ms = new MemoryStream();
59 BinaryFormatter formatter = new BinaryFormatter();
60 formatter.Serialize(ms, obj);
61 return ms.ToString();
62 }
63
64 /// <summary>
65 /// 二进制方式反序列化对象
66 /// </summary>
67 /// <returns></returns>
68 public static T DeSerialize<T>(string str) where T : class
69 {
70 MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str));
71 BinaryFormatter formatter = new BinaryFormatter();
72 T t = formatter.Deserialize(ms) as T;
73 return t;
74 }
75
76 }
77 }
78
79
80
81 //二,测试类
82
83 using System;
84 using System.Xml.Serialization;
85
86 namespace WebApplication1
87 {
88 [Serializable]
89 [XmlRoot("Result")]
90 public class XMLClass
91 {
92 private string rtnValue;
93 [XmlElement("Value")]
94 public string RtnValue
95 {
96 get { return rtnValue; }
97 set { rtnValue = value; }
98 }
99 private string rtnKey;
100 [XmlElement("Key")]
101 public string RtnKey
102 {
103 get { return rtnKey; }
104 set { rtnKey = value; }
105 }
106 }
107 }
108
109 //三,调用
110
111
112
113 using System;
114 using System.Text;
115
116 namespace WebApplication1
117 {
118 public partial class WebForm1 : System.Web.UI.Page
119 {
120 protected void Page_Load(object sender, EventArgs e)
121 {
122 XMLClass xc = new XMLClass();
123 xc.RtnKey = "TestXML";
124 xc.RtnValue = "ObjectToXML";
125 string xml = XMLSerilizable.ObjectToXML<XMLClass>(xc,System.Text.Encoding.UTF8);
126
127 StringBuilder strXML = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
128 strXML.Append("<Result>");
129 strXML.AppendFormat("<Key>{0}</Key>","TestXML");
130 strXML.AppendFormat("<Value>{0}</Value>","XMLToObject");
131 strXML.Append("</Result>");
132
133 XMLClass xClass = XMLSerilizable.XMLToObject<XMLClass>(strXML.ToString(),System.Text.Encoding.UTF8);
134 }
135 }
136 }