SerializerHelper.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Xml;
  5. using System.IO;
  6. using System.Xml.Serialization;
  7. using System.Runtime.Serialization.Formatters.Binary;
  8. namespace SysBaseLibs
  9. {
  10. public sealed class SerializerHelper
  11. {
  12. /// <summary>
  13. /// 序列化成xml
  14. /// </summary>
  15. /// <param name="obj"></param>
  16. /// <returns></returns>
  17. public static string SerializerToString(object obj)
  18. {
  19. StringWriter writer = new StringWriter();
  20. XmlSerializer serializer = new XmlSerializer(obj.GetType());
  21. serializer.Serialize(writer, obj);
  22. XmlDocument doc = new XmlDocument();
  23. doc.LoadXml(writer.ToString());
  24. return doc.DocumentElement.OuterXml;
  25. }
  26. public static XmlNode SerializerToXmlNode(object obj)
  27. {
  28. StringWriter writer = new StringWriter();
  29. XmlSerializer serializer = new XmlSerializer(obj.GetType());
  30. serializer.Serialize(writer, obj);
  31. XmlDocument doc = new XmlDocument();
  32. doc.LoadXml(writer.ToString());
  33. return doc.DocumentElement;
  34. }
  35. /// <summary>
  36. /// 反序列化成对象
  37. /// </summary>
  38. /// <param name="xmlString"></param>
  39. /// <param name="type"></param>
  40. /// <returns></returns>
  41. public static object Deserialize(string xmlString, Type type)
  42. {
  43. StringReader reader = new StringReader(xmlString);
  44. XmlSerializer serializer = new XmlSerializer(type);
  45. return serializer.Deserialize(reader);
  46. }
  47. public static object Deserialize(XmlNode node, Type type)
  48. {
  49. StringReader reader = new StringReader(node.OuterXml);
  50. XmlSerializer serializer = new XmlSerializer(type);
  51. return serializer.Deserialize(reader);
  52. }
  53. /// <summary>
  54. /// 将支持序列化的对象序列化成字符串
  55. /// </summary>
  56. /// <param name="poObject"></param>
  57. /// <returns></returns>
  58. public static string SerializeObject(object poObject)
  59. {
  60. BinaryFormatter loBinFormatter = new BinaryFormatter();
  61. MemoryStream loMs = new MemoryStream();
  62. loBinFormatter.Serialize(loMs, poObject);
  63. byte[] buffer = loMs.ToArray();
  64. string lcRetVal = Convert.ToBase64String(buffer, 0, buffer.Length);
  65. loMs.Close();
  66. return lcRetVal;
  67. }
  68. /// <summary>
  69. /// 将字符串反序列化成对象
  70. /// </summary>
  71. /// <param name="pcString"></param>
  72. /// <returns></returns>
  73. public static object DeserializeObject(string pcString)
  74. {
  75. object loRetVal = null;
  76. if (pcString != null)
  77. {
  78. byte[] buffer = Convert.FromBase64String(pcString);
  79. BinaryFormatter loFormatter = new BinaryFormatter();
  80. MemoryStream loStream = new MemoryStream(buffer, 0, buffer.Length);
  81. loRetVal = loFormatter.Deserialize(loStream);
  82. loStream.Close();
  83. }
  84. return loRetVal;
  85. }
  86. }
  87. }