CustomXmlSerializer.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Text;
  6. using System.IO;
  7. using System.Xml.Serialization;
  8. using System.Xml;
  9. namespace FestoDebugger.Service
  10. {
  11. public class CustomXmlSerializer
  12. {
  13. static public void Serialize<T>(T t, string fileName)
  14. {
  15. XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
  16. xmlWriterSettings.Indent = true;
  17. using (FileStream fileWriter = new FileStream(fileName, FileMode.Create))
  18. using (XmlWriter writer = XmlTextWriter.Create(fileWriter, xmlWriterSettings))
  19. {
  20. XmlSerializer serializer = new XmlSerializer(t.GetType());
  21. serializer.Serialize(writer, t);
  22. writer.Flush();
  23. }
  24. }
  25. static public string Serialize<T>(T t)
  26. {
  27. StringBuilder buffer = new StringBuilder();
  28. using (StringWriter writer = new StringWriter(buffer))
  29. {
  30. XmlSerializer serializer = new XmlSerializer(typeof(T));
  31. serializer.Serialize(writer, t);
  32. }
  33. return buffer.ToString();
  34. }
  35. static public T Deserialize<T>(string xmlString)
  36. {
  37. if (string.IsNullOrWhiteSpace(xmlString))
  38. throw new ArgumentNullException("xmlString");
  39. using (StringReader reader = new StringReader(xmlString))
  40. {
  41. XmlSerializer serializer = new XmlSerializer(typeof(T));
  42. return (T)serializer.Deserialize(reader);
  43. }
  44. }
  45. static public T Deserialize<T>(Stream streamReader)
  46. {
  47. if (streamReader == null)
  48. throw new ArgumentNullException("streamReader");
  49. if (streamReader.Length <= 0)
  50. throw new EndOfStreamException("The stream is blank");
  51. using (XmlReader reader = XmlTextReader.Create(streamReader))
  52. {
  53. XmlSerializer deserializer = new XmlSerializer(typeof(T));
  54. return (T)deserializer.Deserialize(reader);
  55. }
  56. }
  57. static public T Deserialize<T>(FileInfo fi)
  58. {
  59. if (fi == null)
  60. throw new ArgumentNullException("fi");
  61. if (!fi.Exists)
  62. throw new FileNotFoundException(fi.FullName);
  63. using (FileStream fileReader = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read))
  64. return Deserialize<T>(fileReader);
  65. }
  66. }
  67. }