将XML序列化成对象

前端之家收集整理的这篇文章主要介绍了将XML序列化成对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1

  1. namespace MvcAppTest.Controllers
  2. {
  3. public class HomeController : Controller
  4. {
  5. //
  6. // GET: /Home/
  7.  
  8. public ActionResult Index()
  9. {
  10.  
  11. string sql = "select a.*,(select UserName,Password,Error from T_UserLogin where LoginId=a.LoginId for xml auto,type,elements) as UserInfoXML from T_UserInfo a ";
  12.  
  13. List<T_UserInfo> list = sqlHelper.ExecuteClass<T_UserInfo>(sql,null);
  14.  
  15. //经过sql语句查询后UserInfoXML字段的值为:
  16. // <T_UserLogin><UserName>无盐海</UserName><Password>123456</Password><Error>1</Error></T_UserLogin>
  17.  
  18. //将XML格式的字符串转换成对象(特别要注意<T_UserLogin>要与目标类名称一致)
  19. var objList = HomeController.XMLToObject<T_UserLogin>(list.First().UserInfoXML,Encoding.UTF8);
  20. var name = objList.UserName;
  21. return View();
  22. }
  23.  
  24.  
  25. /// <summary>
  26. /// 将object对象序列化成XML
  27. /// </summary>
  28. /// <typeparam name="T">需要序列化的对象</typeparam>
  29. /// <param name="encoding">如果序列化出错,可以尝试修改下encoding的值试试</param>
  30. /// <returns></returns>
  31. public static string ObjectToXML<T>(T t,Encoding encoding)
  32. {
  33. XmlSerializer ser = new XmlSerializer(t.GetType());
  34. using (MemoryStream mem = new MemoryStream())
  35. {
  36. using (XmlTextWriter writer = new XmlTextWriter(mem,encoding))
  37. {
  38. XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
  39. ns.Add("","");
  40. ser.Serialize(writer,t,ns);
  41. return encoding.GetString(mem.ToArray()).Trim();
  42. }
  43. }
  44. }
  45.  
  46. /// <summary>
  47. /// 将XML反序列化成对象
  48. /// </summary>
  49. /// <typeparam name="T"></typeparam>
  50. /// <param name="source">需要序列化的XML字符串</param>
  51. /// <param name="encoding">如果序列化出错,可以尝试修改下encoding的值试试</param>
  52. /// <returns></returns>
  53. public static T XMLToObject<T>(string source,Encoding encoding)
  54. {
  55. XmlSerializer mySerializer = new XmlSerializer(typeof(T));
  56. using (MemoryStream stream = new MemoryStream(encoding.GetBytes(source)))
  57. {
  58. return (T)mySerializer.Deserialize(stream);
  59. }
  60. }
  61. }
  62. }
  1. namespace MvcAppTest.DAL
  2. {
  3. [Serializable]
  4. public class T_UserInfo
  5. {
  6. public int Id { get; set; }
  7.  
  8. public string UserName { get; set; }
  9.  
  10. public int Age { get; set; }
  11.  
  12. public string UserInfoXML { get; set; }
  13. }
  14. [Serializable]
  15. public class T_UserLogin
  16. {
  17. public string UserName { get; set; }
  18.  
  19. public string Password { get; set; }
  20.  
  21. public int Error { get; set; }
  22. }
  23. }

猜你在找的XML相关文章