forked from smartstore/SmartStoreNET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathXmlHelper.cs
More file actions
190 lines (169 loc) · 4.6 KB
/
Copy pathXmlHelper.cs
File metadata and controls
190 lines (169 loc) · 4.6 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;
namespace SmartStore.Core
{
/// <summary>
/// Xml helper class
/// </summary>
public partial class XmlHelper
{
private readonly static Regex s_xmlEncodePattern = new Regex(@"[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD]", RegexOptions.Compiled);
#region Methods
/// <summary>
/// XML Encode
/// </summary>
/// <param name="str">String</param>
/// <returns>Encoded string</returns>
public static string XmlEncode(string str)
{
if (str == null)
return null;
str = s_xmlEncodePattern.Replace(str, "");
return XmlEncodeAsIs(str);
}
/// <summary>
/// XML Encode as is
/// </summary>
/// <param name="str">String</param>
/// <returns>Encoded string</returns>
public static string XmlEncodeAsIs(string str)
{
if (str == null)
return null;
using (var sw = new StringWriter())
{
using (var xwr = new XmlTextWriter(sw))
{
xwr.WriteString(str);
return sw.ToString();
}
}
}
/// <summary>
/// Encodes an attribute
/// </summary>
/// <param name="str">Attribute</param>
/// <returns>Encoded attribute</returns>
public static string XmlEncodeAttribute(string str)
{
if (str == null)
return null;
str = s_xmlEncodePattern.Replace(str, "");
return XmlEncodeAttributeAsIs(str);
}
/// <summary>
/// Encodes an attribute as is
/// </summary>
/// <param name="str">Attribute</param>
/// <returns>Encoded attribute</returns>
public static string XmlEncodeAttributeAsIs(string str)
{
return XmlEncodeAsIs(str).Replace("\"", """);
}
/// <summary>
/// Decodes an attribute
/// </summary>
/// <param name="str">Attribute</param>
/// <returns>Decoded attribute</returns>
public static string XmlDecode(string str)
{
var sb = new StringBuilder(str);
return sb.Replace(""", "\"").Replace("'", "'").Replace("<", "<").Replace(">", ">").Replace("&", "&").ToString();
}
/// <summary>
/// Serializes a datetime
/// </summary>
/// <param name="dateTime">Datetime</param>
/// <returns>Serialized datetime</returns>
public static string SerializeDateTime(DateTime dateTime)
{
var xmlS = new XmlSerializer(typeof(DateTime));
var sb = new StringBuilder();
using (var sw = new StringWriter(sb))
{
xmlS.Serialize(sw, dateTime);
return sb.ToString();
}
}
/// <summary>
/// Deserializes a datetime
/// </summary>
/// <param name="dateTime">Datetime</param>
/// <returns>Deserialized datetime</returns>
public static DateTime DeserializeDateTime(string dateTime)
{
var xmlS = new XmlSerializer(typeof(DateTime));
using (var sr = new StringReader(dateTime))
{
object test = xmlS.Deserialize(sr);
return (DateTime)test;
}
}
/// <summary>
/// Serializes an object instance to a XML formatted string
/// </summary>
/// <typeparam name="T">Object type</typeparam>
/// <param name="instance">Object instance</param>
/// <returns>XML string</returns>
public static string Serialize<T>(T instance)
{
return Serialize(instance, typeof(T));
}
/// <summary>
/// Serializes an object instance to a XML formatted string
/// </summary>
/// <param name="instance">Object instance</param>
/// <param name="type">Object type</param>
/// <returns>XML string</returns>
public static string Serialize(object instance, Type type)
{
if (instance == null)
return null;
Guard.NotNull(() => type);
using (var writer = new StringWriter())
{
var xmlSerializer = new XmlSerializer(type);
xmlSerializer.Serialize(writer, instance);
return writer.ToString();
}
}
/// <summary>
/// Deserializes a XML formatted string to an object instance
/// </summary>
/// <typeparam name="T">Object type</typeparam>
/// <param name="xml">XML string</param>
/// <returns>Object instance</returns>
public static T Deserialize<T>(string xml)
{
return (T)Deserialize(xml, typeof(T));
}
/// <summary>
/// Deserializes a XML formatted string to an object instance
/// </summary>
/// <param name="xml">XML string</param>
/// <param name="type">Object type</param>
/// <returns>Object instance</returns>
public static object Deserialize(string xml, Type type)
{
Guard.NotNull(() => type);
try
{
if (xml.HasValue())
{
using (var reader = new StringReader(xml))
{
var serializer = new XmlSerializer(type);
return serializer.Deserialize(reader);
}
}
}
catch { }
return Activator.CreateInstance(type);
}
#endregion
}
}