从字符串,而不是反序列化的TextReader [英] Deserialize from string instead TextReader

查看:151
本文介绍了从字符串,而不是反序列化的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆