XML常用类(淘宝API)

  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<stringstring> reValue = new Dictionary<stringstring>();
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<stringstring> 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 

 

posted @ 2009-08-20 19:04  极品菜鸟  阅读(1693)  评论(0编辑  收藏  举报