C# 中对象序列化XML的方法
今天我们来看一下在C#中对象序列化XML的方法。
不得不说,在这个Json横行的年代,XML虽然式微,但也的确是一股子清流。(个人感觉)
不多说,直接开始。
首先先说怎么用
需要用到的是这两个命名空间(主要)
usingSystem.Xml; usingSystem.Xml.Serialization;
然后序列化和反序列化的方式和Json一样。(后面提供封装方法)
stringresult=XmlSerializeHelper.Serialize(newtest { name="Seven", cardId="663927", age=15, currentTime=DateTime.Now }); Console.WriteLine(result); testtest2=XmlSerializeHelper.DeSerialize (result);
下面来看封装类
publicclassXmlSerializeHelper { //对象转XML publicstaticstringObjToXml(objectobj) { using(MemoryStreamStream=newMemoryStream()) { XmlSerializerxml=newXmlSerializer(obj.GetType()); xml.Serialize(Stream,obj); Stream.Position=0; StreamReadersr=newStreamReader(Stream); returnsr.ReadToEnd(); } } publicstaticstringSerialize(Tobj) { returnSerialize (obj,Encoding.UTF8); } /// ///实体对象序列化成xml字符串 /// ////// /// publicstaticstringSerialize (Tobj,Encodingencoding) { try { if(obj==null) { thrownewArgumentNullException("obj"); } varser=newXmlSerializer(obj.GetType()); using(varms=newMemoryStream()) { using(varwriter=newXmlTextWriter(ms,encoding)) { writer.Formatting=Formatting.Indented; ser.Serialize(writer,obj); } varxml=encoding.GetString(ms.ToArray()); xml=xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"",""); xml=xml.Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"",""); xml=Regex.Replace(xml,@"\s{2}",""); xml=Regex.Replace(xml,@"\s{1}/>","/>"); returnxml; } } catch(Exceptionex) { throwex; } } /// ///反序列化xml字符为对象,默认为Utf-8编码 /// ////// /// publicstaticTDeSerialize (stringxml)whereT:new() { returnDeSerialize (xml,Encoding.UTF8); } /// ///反序列化xml字符为对象 /// ////// /// /// publicstaticTDeSerialize (stringxml,Encodingencoding)whereT:new() { try { varmySerializer=newXmlSerializer(typeof(T)); using(varms=newMemoryStream(encoding.GetBytes(xml))) { using(varsr=newStreamReader(ms,encoding)) { return(T)mySerializer.Deserialize(sr); } } } catch(Exceptione) { returndefault(T); } } } ClassOfXmlSerializeHelper
好了,板砖要紧,先到这里。
以上就是C#中对象序列化XML的方法的详细内容,更多关于c#对象序列化XML的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。