Mercurial > pub > ImplabNet
comparison Implab/Xml/XmlSerializerExtensions.cs @ 278:6691aff01de1 v3
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)
Implab.ServiceHost: rewritten TypeReference (added support for nested types), stable API
author | cin |
---|---|
date | Thu, 03 May 2018 09:59:44 +0300 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
277:963b17c275be | 278:6691aff01de1 |
---|---|
1 using System.IO; | |
2 using System.Text; | |
3 using System.Xml; | |
4 using System.Xml.Linq; | |
5 using System.Xml.Serialization; | |
6 | |
7 namespace Implab.Xml { | |
8 public static class XmlSerializerExtensions { | |
9 | |
10 public static void Serialize(this XmlSerializer that, object obj, XmlElement element) { | |
11 Safe.ArgumentNotNull(that, nameof(that)); | |
12 using (var writer = element.CreateNavigator().AppendChild()) | |
13 that.Serialize(writer, obj); | |
14 } | |
15 | |
16 public static void Serialize(this XmlSerializer that, object obj, XElement element) { | |
17 Safe.ArgumentNotNull(that, nameof(that)); | |
18 using (var writer = element.CreateWriter()) | |
19 that.Serialize(writer, obj); | |
20 } | |
21 | |
22 public static XDocument SerializeAsXDocumnet(this XmlSerializer that, object obj) { | |
23 Safe.ArgumentNotNull(that, nameof(that)); | |
24 var doc = new XDocument(); | |
25 using (var writer = doc.CreateWriter()) { | |
26 that.Serialize(writer, obj); | |
27 } | |
28 return doc; | |
29 } | |
30 | |
31 public static XmlDocument SerializeAsXmlDocument(this XmlSerializer that, object obj) { | |
32 Safe.ArgumentNotNull(that, nameof(that)); | |
33 var doc = new XmlDocument(); | |
34 using (var writer = doc.CreateNavigator().AppendChild()) { | |
35 that.Serialize(writer, obj); | |
36 } | |
37 return doc; | |
38 } | |
39 public static string SerializeAsString(this XmlSerializer that, object obj) { | |
40 Safe.ArgumentNotNull(that, nameof(that)); | |
41 using (var writer = new StringWriter()) { | |
42 that.Serialize(writer, obj); | |
43 return writer.ToString(); | |
44 } | |
45 } | |
46 | |
47 public static void SerializeToFile(this XmlSerializer that, object obj, string file, Encoding encoding) { | |
48 Safe.ArgumentNotNull(that, nameof(that)); | |
49 using (var writer = new StreamWriter(File.Create(file),encoding)) | |
50 that.Serialize(writer, obj); | |
51 } | |
52 | |
53 public static void SerializeToFile(this XmlSerializer that, object obj, string file) { | |
54 SerializeToFile(that, obj, file, Encoding.UTF8); | |
55 } | |
56 | |
57 public static object Deserialize(this XmlSerializer that, XmlElement element) { | |
58 Safe.ArgumentNotNull(that, nameof(that)); | |
59 Safe.ArgumentNotNull(element, nameof(element)); | |
60 | |
61 using (var reader = element.CreateNavigator().ReadSubtree()) | |
62 return that.Deserialize(reader); | |
63 } | |
64 | |
65 public static object Deserialize(this XmlSerializer that, XElement element) { | |
66 Safe.ArgumentNotNull(that, nameof(that)); | |
67 Safe.ArgumentNotNull(element, nameof(element)); | |
68 | |
69 using (var reader = element.CreateReader()) | |
70 return that.Deserialize(reader); | |
71 } | |
72 | |
73 public static object DeserializeFromString(this XmlSerializer that, string text) { | |
74 Safe.ArgumentNotNull(that, nameof(that)); | |
75 | |
76 using(var reader = new StringReader(text)) | |
77 return that.Deserialize(reader); | |
78 } | |
79 | |
80 public static object DeserializeFromFile(this XmlSerializer that, string file) { | |
81 Safe.ArgumentNotNull(that, nameof(that)); | |
82 | |
83 using(var reader = File.OpenRead(file)) | |
84 return that.Deserialize(reader); | |
85 } | |
86 | |
87 | |
88 } | |
89 } |