1 /// <summary>
2 /// 将Xml对象转换为指定的实例
3 /// </summary>
4 /// <typeparam name="T">实例</typeparam>
5 /// <param name="xml">Xml字符串</param>
6 /// <param name="graph">目标对象</param>
7 /// <param name="ignorProperties">不需要转换的元素集合</param>
8 /// <param name="isSpecialDateTime">是否为特殊时间(因为航联数据时间比较特殊使用)</param>
9 /// <returns></returns>
10 public static T DeserializeXmlToObject<T>(string xml, T graph, string[] ignorProperties,bool isSpecialDateTime)
11 {
12 XmlDocument xmlDoc = new XmlDocument();
13 try
14 {
15 xmlDoc.LoadXml(xml);
16 XmlNodeList list = xmlDoc.DocumentElement.ChildNodes;
17 Type t = graph.GetType();
18 foreach (XmlNode node in list)
19 {
20 if (Array.Exists<string>(ignorProperties,
21 target => (string.Compare(target, node.Name, true) == 0)) == false)
22 {
23 if (!string.IsNullOrEmpty(node.InnerText))
24 {
25 PropertyInfo info = null;
26 try
27 {
28 info = t.GetProperty(node.Name);
29 }
30 catch
31 {
32 continue;
33 }
34 object val = null;
35 if (isSpecialDateTime)
36 {
37 if (info.PropertyType.Name.Equals("DateTime") ||
38 info.PropertyType.Name.Equals("System.DateTime"))
39 {
40 string dateTime = node.InnerText.PadRight(14, '0');
41 val = DateTime.ParseExact(dateTime, "yyyyMMddHHmmss", null);
42 }
43 else
44 {
45 val = Convert.ChangeType(node.InnerText, info.PropertyType);
46 }
47 }
48 else
49 {
50 val = Convert.ChangeType(node.InnerText, info.PropertyType);
51 }
52 info.SetValue(graph, val, null);
53 }
54 }
55 }
56 }
57 catch (XmlException err)
58 {
59 throw err;
60 }
61 catch (Exception err)
62 {
63 throw err;
64 }
65 return graph;
66 }
2 /// 将Xml对象转换为指定的实例
3 /// </summary>
4 /// <typeparam name="T">实例</typeparam>
5 /// <param name="xml">Xml字符串</param>
6 /// <param name="graph">目标对象</param>
7 /// <param name="ignorProperties">不需要转换的元素集合</param>
8 /// <param name="isSpecialDateTime">是否为特殊时间(因为航联数据时间比较特殊使用)</param>
9 /// <returns></returns>
10 public static T DeserializeXmlToObject<T>(string xml, T graph, string[] ignorProperties,bool isSpecialDateTime)
11 {
12 XmlDocument xmlDoc = new XmlDocument();
13 try
14 {
15 xmlDoc.LoadXml(xml);
16 XmlNodeList list = xmlDoc.DocumentElement.ChildNodes;
17 Type t = graph.GetType();
18 foreach (XmlNode node in list)
19 {
20 if (Array.Exists<string>(ignorProperties,
21 target => (string.Compare(target, node.Name, true) == 0)) == false)
22 {
23 if (!string.IsNullOrEmpty(node.InnerText))
24 {
25 PropertyInfo info = null;
26 try
27 {
28 info = t.GetProperty(node.Name);
29 }
30 catch
31 {
32 continue;
33 }
34 object val = null;
35 if (isSpecialDateTime)
36 {
37 if (info.PropertyType.Name.Equals("DateTime") ||
38 info.PropertyType.Name.Equals("System.DateTime"))
39 {
40 string dateTime = node.InnerText.PadRight(14, '0');
41 val = DateTime.ParseExact(dateTime, "yyyyMMddHHmmss", null);
42 }
43 else
44 {
45 val = Convert.ChangeType(node.InnerText, info.PropertyType);
46 }
47 }
48 else
49 {
50 val = Convert.ChangeType(node.InnerText, info.PropertyType);
51 }
52 info.SetValue(graph, val, null);
53 }
54 }
55 }
56 }
57 catch (XmlException err)
58 {
59 throw err;
60 }
61 catch (Exception err)
62 {
63 throw err;
64 }
65 return graph;
66 }