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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。