• c#datatable序列化xml


     1     public static List<T> ToListModel<T>(this DataTable dt)
     2     {
     3         if (dt.Rows.Count <= 0) return null;
     4         string typeName = typeof(T).Name;
     5         using (MemoryStream ms = new MemoryStream())
     6         {
     7             dt.WriteXml(ms);
     8             ms.Position = 0;
     9             using (StreamReader sr = new StreamReader(ms))
    10             {
    11                 string title = "<?xml version="1.0" encoding="utf - 8"?>";
    12                 string s = title + sr.ReadToEnd();
    13                 s = s.Replace("<NewDataSet>", $"<ArrayOf{typeName} xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">")
    14                     .Replace("</NewDataSet>", $"</ArrayOf{typeName}>")
    15                     .Replace("<ds>", $"<{typeName}>").Replace("</ds>", $"</{typeName}>");
    16                 return Common.XML.DeXMLSerialize<List<T>>(s);
    17             }
    18         }
    19     }
     1             public static T DeXMLSerialize<T>(string xmlString)
     2             {
     3                 T cloneObject = default(T);
     4 
     5                 StringBuilder buffer = new StringBuilder();
     6                 buffer.Append(xmlString);
     7 
     8                 XmlSerializer serializer = new XmlSerializer(typeof(T));
     9 
    10                 using (TextReader reader = new StringReader(buffer.ToString()))
    11                 {
    12                     Object obj = serializer.Deserialize(reader);
    13                     cloneObject = (T)obj;
    14                 }
    15 
    16                 return cloneObject;
    17             }

    使用方法:

     1 var list = new DataTable().ToListModel<List<MyClass>>();

     MyClass:

    1 public class MyClass {
    2     [XmlElement("sql_column_name")]
    3     public int MyProperty { get; set; }
    4 }
  • 相关阅读:
    <%!%>和<%%>的区别
    <jsp:param>传参乱码问题
    RedHat6.4 安装yum源
    J2EE中getParameter与getAttribute以及对应的EL表达式
    Ubuntu xrdp 遠端桌面連線 a
    Ubuntu SSH server 快速安裝和設定 a
    Ubuntu 12.04 快速安裝 Scrapy a
    Linux 壓縮與解壓縮指令備忘錄 a
    vim 設定快捷鍵為 [Ctrl] + [s] 存檔 a
    Linux 常用指令備忘錄 a
  • 原文地址:https://www.cnblogs.com/RedSky/p/15267801.html
Copyright © 2020-2023  润新知