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

 public class XmlUtil 

    { 

     

        #region 反序列化 

        /// <summary> 

        /// 反序列化 

        /// </summary> 

        /// <param name="type">类型</param> 

        /// <param name="xml">XML字符串</param> 

        /// <returns></returns> 

        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; 

            } 

        } 

        /// <summary> 

        /// 反序列化 

        /// </summary> 

        /// <param name="type"></param> 

        /// <param name="xml"></param> 

        /// <returns></returns> 

        public static object Deserialize(Type type, Stream stream) 

        { 

            XmlSerializer xmldes = new XmlSerializer(type); 

            return xmldes.Deserialize(stream); 

        } 

        #endregion 

 

        #region 序列化XML文件 

        /// <summary> 

        /// 序列化XML文件 

        /// </summary> 

        /// <param name="type">类型</param> 

        /// <param name="obj">对象</param> 

        /// <returns></returns> 

        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 

        /// <summary> 

        /// 将XML转换为DATATABLE 

        /// </summary> 

        /// <param name="FileURL"></param> 

        /// <returns></returns> 

        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; 

            } 

        } 

        /// <summary> 

        /// 将XML转换为DATATABLE 

        /// </summary> 

        /// <param name="FileURL"></param> 

        /// <returns></returns> 

        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节点的值 

        /// <summary> 

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

        /// </summary> 

        /// <param name="stringRoot">XML节点的标记</param> 

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

        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 

 

 

    }
</pre><pre code_snippet_id="662361" snippet_file_name="blog_20150508_3_1990479" name="code" class="html"><pre name="code" class="html"> private void button1_Click(object sender, EventArgs e) 

        { 

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

            string xml = @"<Depart> 

                          <DepartID>123</DepartID> 

                         <PerSons> 

                         <PerSon> 

                         <name>张三</name> 

                         <age>3</age> 

                      </PerSon> 

                         <PerSon> 

                         <name>李斯</name> 

                         <age>56</age> 

                         </PerSon> 

                         </PerSons> 

                         </Depart>  

"; 

 

            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; 

       

    } 

  



                
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值