zoukankan      html  css  js  c++  java
  • List实体类、DataTable与xml互转

    序列化常用Attribute讲解说明
    
    [XmlRootAttribute("MyCity", Namespace="abc.abc", IsNullable=false)]     // 当该类为Xml根节点时,以此为根节点名称。
    public class City
    
    [XmlAttribute("AreaName")]    // 表现为Xml节点属性。<... AreaName="..."/>
    public string Name
    
    [XmlElementAttribute("AreaId", IsNullable = false)]    // 表现为Xml节点。<AreaId>...</AreaId>
    public string Id
    
    [XmlArrayAttribute("Areas")]    // 表现为Xml层次结构,根为Areas,其所属的每个该集合节点元素名为类名。<Areas><Area ... /><Area ... /></Areas>
    public Area[] Areas
    
    [XmlElementAttribute("Area", IsNullable = false)]    // 表现为水平结构的Xml节点。<Area ... /><Area ... />...
    public Area[] Areas
    
    [XmlIgnoreAttribute]    // 忽略该元素的序列化。

     参考

    一、建立/XML序列化公共处理类

     /// <summary>
        /// XML序列化公共处理类
        /// </summary>
        public static class XmlSerializeHelper
        {
            /// <summary>
            /// 将实体对象转换成XML
            /// </summary>
            /// <typeparam name="T">实体类型</typeparam>
            /// <param name="obj">实体对象</param>
            public static string XmlSerialize<T>(T obj)
            {
                try
                {
                    using (StringWriter sw = new StringWriter())
                    {
                        Type t = obj.GetType();
                        XmlSerializer serializer = new XmlSerializer(obj.GetType());
                        serializer.Serialize(sw, obj);
                        sw.Close();
                        return sw.ToString();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("将实体对象转换成XML异常", ex);
                }
            }
    
            /// <summary>
            /// 将XML转换成实体对象
            /// </summary>
            /// <typeparam name="T">实体类型</typeparam>
            /// <param name="strXML">XML</param>
            public static T DESerializer<T>(string strXML) where T : class
            {
                try
                {
                    using (StringReader sr = new StringReader(strXML))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(T));
                        return serializer.Deserialize(sr) as T;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("将XML转换成实体对象异常", ex);
                }
            }
        }

    二、List实体互转调用事例

     static void Main(string[] args)
            {
                #region 测试数据
                List<UserInfo> userList = new List<UserInfo>();
                userList.Add(new UserInfo() { ID = 1, Name = "张三", CreateTime = DateTime.Now });
                userList.Add(new UserInfo() { ID = 2, Name = "李四", CreateTime = DateTime.Now });
                userList.Add(new UserInfo() { ID = 2, Name = "王五" });
                #endregion
                //将实体对象转换成XML
                string xmlResult = XmlSerializeHelper.XmlSerialize(userList);
    
                //将XML转换成实体对象
                List<UserInfo> deResult = XmlSerializeHelper.DESerializer<List<UserInfo>>(xmlResult);
            }
      /// <summary>
        /// 用户信息类
        /// </summary>
        public class UserInfo
        {
            /// <summary>
            /// 编号
            /// </summary>
            public int ID { get; set; }
    
            /// <summary>
            /// 名称
            /// </summary>
            public string Name { get; set; }
    
            /// <summary>
            /// 创建时间
            /// </summary>
            public DateTime? CreateTime { get; set; }
        }

     三、DataTable互转调用事列

     static void Main(string[] args)
            {
                #region 测试数据
                //创建DataTable
                DataTable dt = new DataTable("NewDt");
    
                //创建自增长的ID列
                DataColumn dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
                dt.Columns.Add(new DataColumn("Name", Type.GetType("System.String")));
                dt.Columns.Add(new DataColumn("CreateTime", Type.GetType("System.DateTime")));
    
                //创建数据
                DataRow dr = dt.NewRow();
                dr["ID"] = 1;
                dr["Name"] = "张三";
                dr["CreateTime"] = DateTime.Now;
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr["ID"] = 2;
                dr["Name"] = "李四";
                dr["CreateTime"] = DateTime.Now;
                dt.Rows.Add(dr);
    
                dr = dt.NewRow();
                dr["ID"] = 3;
                dr["Name"] = "王五";
                dr["CreateTime"] = DateTime.Now;
                dt.Rows.Add(dr);
                #endregion
                //将DataTable转换成XML
                string xmlResult = XmlSerializeHelper.XmlSerialize(dt);
    
                //将XML转换成DataTable
                DataTable deResult = XmlSerializeHelper.DESerializer<DataTable>(xmlResult);
            }
  • 相关阅读:
    关于margintop/bottom在nonReplaced inline元素上不起作用的解释
    css position
    css :three column +top box
    little box: two box
    css layout :center
    Absolute, Relative, Fixed Positioning: How Do They Differ?
    little box:three column
    利用position:absolute重叠元素
    C#生成(操作)PDF
    asp.net发布网站时三个选项的问题
  • 原文地址:https://www.cnblogs.com/macT/p/11395711.html
Copyright © 2011-2022 走看看