从字符串,而不是反序列化的TextReader [英] Deserialize from string instead TextReader
本文介绍了从字符串,而不是反序列化的TextReader的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从改变我的代码:
路径字符串= @C:\Directory\test.xml
XmlSerializer的S =新的XmlSerializer(typeof运算(轿车));
的TextReader R =新的StreamReader(路径);
车车=(CAR)s.Deserialize(R);
r.Close();
成代码,将一个XML转换为字符串,然后将字符串转换为对象的汽车。
这可能吗?
解决方案
公共静态字符串XmlSerializeToString(此对象对象实例)
{
无功序列化=新的XmlSerializer(objectInstance.GetType());
变种某人=新的StringBuilder();
使用(TextWriter的作家=新的StringWriter(某人))
{
serializer.Serialize(作家,对象实例);
}
返回sb.ToString();
}
公共静态牛逼XmlDeserializeFromString< T>(此字符串目标数据)
{
回报率(T)XmlDeserializeFromString(目标数据的typeof(T));
}
公共静态对象XmlDeserializeFromString(这个字符串目标数据,型型)
{
无功序列化=新的XmlSerializer(类型);
对象的结果;使用
(TextReader的读者=新StringReader(目标数据))
{
结果= serializer.Deserialize(读卡器);
}
返回结果;
}
要使用它:
//定义XML
VAR设置=新ObjectCustomerSettings();
变种的xmlString = settings.XmlSerializeToString();
//使对象
VAR设置= xmlString.XmlDeserializeFromString< ObjectCustomerSettings>();
I want to change my code from:
string path = @"c:\Directory\test.xml";
XmlSerializer s = new XmlSerializer(typeof(Car));
TextReader r = new StreamReader(path);
Car car = (Car)s.Deserialize(r);
r.Close();
into code that would convert an XML to a string, and then convert string to the object Car.
Is this possible?
解决方案
public static string XmlSerializeToString(this object objectInstance)
{
var serializer = new XmlSerializer(objectInstance.GetType());
var sb = new StringBuilder();
using (TextWriter writer = new StringWriter(sb))
{
serializer.Serialize(writer, objectInstance);
}
return sb.ToString();
}
public static T XmlDeserializeFromString<T>(this string objectData)
{
return (T)XmlDeserializeFromString(objectData, typeof(T));
}
public static object XmlDeserializeFromString(this string objectData, Type type)
{
var serializer = new XmlSerializer(type);
object result;
using (TextReader reader = new StringReader(objectData))
{
result = serializer.Deserialize(reader);
}
return result;
}
To use it:
//Make XML
var settings = new ObjectCustomerSettings();
var xmlString = settings.XmlSerializeToString();
//Make Object
var settings = xmlString.XmlDeserializeFromString<ObjectCustomerSettings>();
这篇关于从字符串,而不是反序列化的TextReader的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文