C#通过XmlSerializer把xml字符串序列化
1.序列化列表类型的xml字符串/// <summary>/// 解析XML/// </summary>/// <typeparam name="T">类型</typeparam>/// <param name="strXML">xml内容</param>/// <param name="rootName">根目录
·
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;
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)