1.序列化列表类型的xml字符串
/// <summary>
/// 解析XML 多次创建XmlSerializer对象,电脑内存会快速增大存在性能问题
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strXML">xml内容</param>
/// <param name="rootName">根目录</param>
/// <returns></returns>
public static List<T> XmlDESerializerText<T>(string strXML, string rootName) where T : class
{
try
{
using (StringReader sr = new StringReader(strXML))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(rootName));
return serializer.Deserialize(sr) as List<T>;
}
}
catch (Exception ex)
{
return null;
}
}
2.序列化简单的xml字符串
/// <summary>
/// 解析XML 多次创建XmlSerializer对象,电脑内存会快速增大存在性能问题
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strXML">xml内容</param>
/// <returns></returns>
public static T XmlDESerializer<T>(string strXML) where T : class
{
try
{
using (StringReader sr = new StringReader(strXML))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
return serializer.Deserialize(sr) as T;
}
}
catch (Exception ex)
{
return null;
}
}
3.序列化列表类型的xml字符串
/// <summary>
/// 解析XML
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="strXML">xml内容</param>
/// <param name="xpath">XPath 表达式</param>
/// <returns></returns>
public static List<T> DESerializer<T>(string xml,string xpath)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
List<T> ls = new List<T>();
var XmlObj = doc.SelectNodes(xpath);
foreach (XmlNode item in XmlObj)
{
var statusbox = Activator.CreateInstance(typeof(T),null);
var p = typeof(T).GetProperties();
foreach (var i in p)
{
var obj = item.SelectSingleNode(i.Name);
if (obj != null)
{
i.SetValue(statusbox, obj.InnerText, null);
}
}
ls.Add((T)statusbox);
}
return ls;
}