-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathXmlSerialization.cs
51 lines (47 loc) · 1.28 KB
/
XmlSerialization.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System.IO;
using System.Xml;
using System.Text;
namespace SubCheck
{
public static class XmlSerializer
{
public static void Serialize<T>(string filename, T item)
{
using (var textWriter = new XmlTextWriter(filename, Encoding.ASCII))
{
textWriter.Formatting = Formatting.Indented;
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
serializer.Serialize(textWriter, item);
}
}
public static T Deserialize<T>(string filename)
{
using (var sr = new StreamReader(filename))
{
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
return (T)serializer.Deserialize(sr);
}
}
public static T DeserializeXml<T>(string xml)
{
T result;
using (var sr = new StreamReader(new MemoryStream(Encoding.Default.GetBytes(xml))))
{
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
result = (T)serializer.Deserialize(sr);
}
return result;
}
public static string SerializeToXml<T>(T item)
{
string result;
using (var textWriter = new StringWriter())
{
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
serializer.Serialize(textWriter, item);
result = textWriter.ToString();
}
return result;
}
}
}