1
using
System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Xml;
6 using System.Xml.Serialization;
7 using System.IO;
8
9 namespace TaoBao.API.Common
10 {
11 /// <summary>
12 /// 操作XML常用方法集合
13 /// </summary>
14 public class XMLCommon
15 {
16
17 /// <summary>
18 /// 将XML文档转换成实例对象
19 /// </summary>
20 /// <typeparam name="T"> 对象类型 </typeparam>
21 /// <param name="pmFileName"> 文件名 </param>
22 /// <returns> 实例对象 </returns>
23 public static T DeserializeFile < T > ( string pmFileName)
24 {
25 FileStream fs = new FileStream(pmFileName, FileMode.Open);
26 XmlSerializer xs = new XmlSerializer( typeof (T));
27 T tObjext = (T)xs.Deserialize(fs);
28 fs.Close();
29 fs.Dispose();
30 return tObjext;
31 }
32
33 /// <summary>
34 /// 将实例对象写入XML文档
35 /// </summary>
36 /// <typeparam name="T"> 对象类型 </typeparam>
37 /// <param name="pmFileName"> 文件名 </param>
38 /// <param name="pmT"> 实例对象 </param>
39 public static void SerializeFile < T > ( string pmFileName, T pmT)
40 {
41
42 XmlSerializer serializer = new XmlSerializer(pmT.GetType());
43 TextWriter writer = new StreamWriter(pmFileName);
44 serializer.Serialize(writer, pmT);
45 writer.Close();
46 }
47
48
49 /// <summary>
50 /// 将XML字符串转换成对象
51 /// </summary>
52 /// <typeparam name="T"> 对象类型 </typeparam>
53 /// <param name="pmXMLString"> XML字符串 </param>
54 /// <returns> 实例对象 </returns>
55 public static T DeserializeXML < T > ( string pmXMLString) {
56
57 XmlSerializer xs = new XmlSerializer( typeof (T));
58
59 T tObjext = (T)xs.Deserialize( new StringReader(pmXMLString));
60 return tObjext;
61 }
62
63
64 public static string SerializeString < T > (T pmObject) {
65
66 StringBuilder sb = new StringBuilder();
67 XmlSerializer xc = new XmlSerializer(pmObject.GetType());
68 System.IO.MemoryStream memory = new MemoryStream();
69 System.Xml.XmlTextWriter xmltext = new System.Xml.XmlTextWriter(memory,Encoding.Default);
70 xc.Serialize(xmltext, pmObject);
71 xmltext.Close();
72 memory.Close();
73
74 string reValue = Encoding.Default.GetString(memory.GetBuffer());
75
76 return reValue;
77 }
78 /// <summary>
79 /// 将Josn字符串转换成对象
80 /// </summary>
81 /// <typeparam name="T"> 对象类型 </typeparam>
82 /// <param name="pmXMLString"> Josn字符串 </param>
83 /// <returns> 实例对象 </returns>
84 public static T DeserializeJSON < T > ( string pmXMLString)
85 {
86 XmlSerializer xs = new XmlSerializer( typeof (T));
87 T tObjext = (T)xs.Deserialize( new StringReader(pmXMLString));
88 return tObjext;
89 }
90
91
92 /// <summary>
93 /// 将实例对象转换成键值对集合
94 /// </summary>
95 /// <typeparam name="T"> 对象类型 </typeparam>
96 /// <param name="pmT"> 实例对象 </param>
97 /// <returns> 键值对集合 </returns>
98 public static Dictionary < string , string > DeserializeClass < T > (T pmT)
99 {
100 // UTF8Encoding utf8 = new UTF8Encoding();
101 // Dictionary<string, string> reValue = new Dictionary<string, string>();
102 // string filename = DateTime.Now.ToString("yyyyMMddHHmmssfff")+"xmlfile.xml";
103 // SerializeFile(filename, pmT);
104 // FileStream fs = new FileStream(filename, FileMode.Open);
105 // XmlDocument document = new XmlDocument();
106 // document.Load(fs);
107 // foreach(XmlNode child in document.DocumentElement.ChildNodes){
108
109 // reValue.Add(child.Name, utf8.GetString(utf8.GetBytes(child.InnerText)));
110 // }
111 // fs.Close();
112 // fs.Dispose();
113 /// /File.Delete(filename);
114 // return reValue;
115
116 UTF8Encoding utf8 = new UTF8Encoding();
117 Dictionary < string , string > reValue = new Dictionary < string , string > ();
118 XmlDocument document = new XmlDocument();
119 document.LoadXml(SerializeString < T > (pmT));
120 foreach (XmlNode child in document.DocumentElement.ChildNodes)
121 {
122 reValue.Add(child.Name, utf8.GetString(utf8.GetBytes(child.InnerText)));
123 }
124 return reValue;
125 }
126
127 /// <summary>
128 /// 将键值对集合转成字符串
129 /// </summary>
130 /// <param name="pmDictionary"> 键值对集合 </param>
131 /// <returns> 字符串 </returns>
132 public static string GetParams(IDictionary < string , string > pmDictionary)
133 {
134 System.Collections.IEnumerator iter = pmDictionary.Keys.GetEnumerator();
135 System.Text.StringBuilder orgin = new System.Text.StringBuilder();
136 int i = 0 ;
137 while (iter.MoveNext())
138 {
139 string name = ( string )iter.Current;
140 string value = System.Web.HttpUtility.UrlEncode(pmDictionary[name], System.Text.Encoding.UTF8);
141 orgin.Append(name).Append( " = " ).Append(value);
142 if (i != pmDictionary.Keys.Count - 1 ) orgin.Append( " & " );
143 i ++ ;
144 }
145 return orgin.ToString();
146 }
147
148 }
149 }
150
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Xml;
6 using System.Xml.Serialization;
7 using System.IO;
8
9 namespace TaoBao.API.Common
10 {
11 /// <summary>
12 /// 操作XML常用方法集合
13 /// </summary>
14 public class XMLCommon
15 {
16
17 /// <summary>
18 /// 将XML文档转换成实例对象
19 /// </summary>
20 /// <typeparam name="T"> 对象类型 </typeparam>
21 /// <param name="pmFileName"> 文件名 </param>
22 /// <returns> 实例对象 </returns>
23 public static T DeserializeFile < T > ( string pmFileName)
24 {
25 FileStream fs = new FileStream(pmFileName, FileMode.Open);
26 XmlSerializer xs = new XmlSerializer( typeof (T));
27 T tObjext = (T)xs.Deserialize(fs);
28 fs.Close();
29 fs.Dispose();
30 return tObjext;
31 }
32
33 /// <summary>
34 /// 将实例对象写入XML文档
35 /// </summary>
36 /// <typeparam name="T"> 对象类型 </typeparam>
37 /// <param name="pmFileName"> 文件名 </param>
38 /// <param name="pmT"> 实例对象 </param>
39 public static void SerializeFile < T > ( string pmFileName, T pmT)
40 {
41
42 XmlSerializer serializer = new XmlSerializer(pmT.GetType());
43 TextWriter writer = new StreamWriter(pmFileName);
44 serializer.Serialize(writer, pmT);
45 writer.Close();
46 }
47
48
49 /// <summary>
50 /// 将XML字符串转换成对象
51 /// </summary>
52 /// <typeparam name="T"> 对象类型 </typeparam>
53 /// <param name="pmXMLString"> XML字符串 </param>
54 /// <returns> 实例对象 </returns>
55 public static T DeserializeXML < T > ( string pmXMLString) {
56
57 XmlSerializer xs = new XmlSerializer( typeof (T));
58
59 T tObjext = (T)xs.Deserialize( new StringReader(pmXMLString));
60 return tObjext;
61 }
62
63
64 public static string SerializeString < T > (T pmObject) {
65
66 StringBuilder sb = new StringBuilder();
67 XmlSerializer xc = new XmlSerializer(pmObject.GetType());
68 System.IO.MemoryStream memory = new MemoryStream();
69 System.Xml.XmlTextWriter xmltext = new System.Xml.XmlTextWriter(memory,Encoding.Default);
70 xc.Serialize(xmltext, pmObject);
71 xmltext.Close();
72 memory.Close();
73
74 string reValue = Encoding.Default.GetString(memory.GetBuffer());
75
76 return reValue;
77 }
78 /// <summary>
79 /// 将Josn字符串转换成对象
80 /// </summary>
81 /// <typeparam name="T"> 对象类型 </typeparam>
82 /// <param name="pmXMLString"> Josn字符串 </param>
83 /// <returns> 实例对象 </returns>
84 public static T DeserializeJSON < T > ( string pmXMLString)
85 {
86 XmlSerializer xs = new XmlSerializer( typeof (T));
87 T tObjext = (T)xs.Deserialize( new StringReader(pmXMLString));
88 return tObjext;
89 }
90
91
92 /// <summary>
93 /// 将实例对象转换成键值对集合
94 /// </summary>
95 /// <typeparam name="T"> 对象类型 </typeparam>
96 /// <param name="pmT"> 实例对象 </param>
97 /// <returns> 键值对集合 </returns>
98 public static Dictionary < string , string > DeserializeClass < T > (T pmT)
99 {
100 // UTF8Encoding utf8 = new UTF8Encoding();
101 // Dictionary<string, string> reValue = new Dictionary<string, string>();
102 // string filename = DateTime.Now.ToString("yyyyMMddHHmmssfff")+"xmlfile.xml";
103 // SerializeFile(filename, pmT);
104 // FileStream fs = new FileStream(filename, FileMode.Open);
105 // XmlDocument document = new XmlDocument();
106 // document.Load(fs);
107 // foreach(XmlNode child in document.DocumentElement.ChildNodes){
108
109 // reValue.Add(child.Name, utf8.GetString(utf8.GetBytes(child.InnerText)));
110 // }
111 // fs.Close();
112 // fs.Dispose();
113 /// /File.Delete(filename);
114 // return reValue;
115
116 UTF8Encoding utf8 = new UTF8Encoding();
117 Dictionary < string , string > reValue = new Dictionary < string , string > ();
118 XmlDocument document = new XmlDocument();
119 document.LoadXml(SerializeString < T > (pmT));
120 foreach (XmlNode child in document.DocumentElement.ChildNodes)
121 {
122 reValue.Add(child.Name, utf8.GetString(utf8.GetBytes(child.InnerText)));
123 }
124 return reValue;
125 }
126
127 /// <summary>
128 /// 将键值对集合转成字符串
129 /// </summary>
130 /// <param name="pmDictionary"> 键值对集合 </param>
131 /// <returns> 字符串 </returns>
132 public static string GetParams(IDictionary < string , string > pmDictionary)
133 {
134 System.Collections.IEnumerator iter = pmDictionary.Keys.GetEnumerator();
135 System.Text.StringBuilder orgin = new System.Text.StringBuilder();
136 int i = 0 ;
137 while (iter.MoveNext())
138 {
139 string name = ( string )iter.Current;
140 string value = System.Web.HttpUtility.UrlEncode(pmDictionary[name], System.Text.Encoding.UTF8);
141 orgin.Append(name).Append( " = " ).Append(value);
142 if (i != pmDictionary.Keys.Count - 1 ) orgin.Append( " & " );
143 i ++ ;
144 }
145 return orgin.ToString();
146 }
147
148 }
149 }
150