c# XML和实体类之间相互转换

 public class XmlUtil 

    { 

     

        #region 反序列化 

        ///  

        /// 反序列化 

        ///  

        /// 类型 

        /// XML字符串 

        ///  

        public static object Deserialize(Type type, string xml) 

        { 

            try 

            { 

                using (StringReader sr = new StringReader(xml)) 

                { 

                    XmlSerializer xmldes = new XmlSerializer(type); 

                    return xmldes.Deserialize(sr); 

                } 

            } 

            catch (Exception e) 

            { 

 

                return null; 

            } 

        } 

        ///  

        /// 反序列化 

        ///  

        ///  

        ///  

        ///  

        public static object Deserialize(Type type, Stream stream) 

        { 

            XmlSerializer xmldes = new XmlSerializer(type); 

            return xmldes.Deserialize(stream); 

        } 

        #endregion 

 

        #region 序列化XML文件 

        ///  

        /// 序列化XML文件 

        ///  

        /// 类型 

        /// 对象 

        ///  

        public static string Serializer(Type type, object obj) 

        { 

            MemoryStream Stream = new MemoryStream(); 

            //创建序列化对象 

            XmlSerializer xml = new XmlSerializer(type); 

            try 

            { 

                //序列化对象 

                xml.Serialize(Stream, obj); 

            } 

            catch (InvalidOperationException) 

            { 

                throw; 

            } 

            Stream.Position = 0; 

            StreamReader sr = new StreamReader(Stream); 

            string str = sr.ReadToEnd(); 

            return str; 

        } 

        #endregion 

 

        #region 将XML转换为DATATABLE 

        ///  

        /// 将XML转换为DATATABLE 

        ///  

        ///  

        ///  

        public static DataTable XmlAnalysisArray() 

        { 

            try 

            { 

                string FileURL = System.Configuration.ConfigurationManager.AppSettings["Client"].ToString(); 

                DataSet ds = new DataSet(); 

                ds.ReadXml(FileURL); 

                return ds.Tables[0]; 

            } 

            catch (Exception ex) 

            { 

                System.Web.HttpContext.Current.Response.Write(ex.Message.ToString()); 

                return null; 

            } 

        } 

        ///  

        /// 将XML转换为DATATABLE 

        ///  

        ///  

        ///  

        public static DataTable XmlAnalysisArray(string FileURL) 

        { 

            try 

            { 

                DataSet ds = new DataSet(); 

                ds.ReadXml(FileURL); 

                return ds.Tables[0]; 

            } 

            catch (Exception ex) 

            { 

                System.Web.HttpContext.Current.Response.Write(ex.Message.ToString()); 

                return null; 

            } 

        } 

        #endregion 

 

        #region 获取对应XML节点的值 

        ///  

        /// 摘要:获取对应XML节点的值 

        ///  

        /// XML节点的标记 

        /// 返回获取对应XML节点的值 

        public static string XmlAnalysis(string stringRoot, string xml) 

        { 

            if (stringRoot.Equals("") == false) 

            { 

                try 

                { 

                    XmlDocument XmlLoad = new XmlDocument(); 

                    XmlLoad.LoadXml(xml); 

                    return XmlLoad.DocumentElement.SelectSingleNode(stringRoot).InnerXml.Trim(); 

                } 

                catch (Exception ex) 

                { 

                    

                } 

            } 

            return ""; 

        } 

        #endregion 

 

 

    }
 private void button1_Click(object sender, EventArgs e) 

        { 

            //把XML文件转换为对应的实体类 

            string xml = @" 

                          123 

                          

                          

                         张三 

                         3 

                       

                          

                         李斯 

                         56 

                          

                          

                           

"; 

 

            var Info = (Depart)XmlUtil.Deserialize(typeof(Depart), xml); 

 

            MessageBox.Show(Info.DepartID); 

        } 

 

        private void button2_Click(object sender, EventArgs e) 

        { 

            //把实体类转换为XML 

            Depart dp = new Depart(); 

            dp.DepartID = "qq"; 

            dp.DepartID = "123"; 

 

            PerSon p1 = new PerSon(); 

            p1.name = "zhang"; 

            p1.age = "4"; 

            dp.PerSons[0] = p1; 

      

 

         string resutl=XmlUtil.Serializer(typeof(Depart), dp); 

         MessageBox.Show(resutl); 

        } 

    } 

 

    public class Depart 

    { 

        public string DepartID; 

        public PerSon[] PerSons=new PerSon[2]; 

    } 

 

    public class PerSon 

    { 

       public string name; 

 

        public string age; 

       

    } 

  


 
 

你可能感兴趣的:(Asp.net)