当前位置:  开发笔记 > 编程语言 > 正文

将xml字符串反序列化为对象

如何解决《将xml字符串反序列化为对象》经验,为你挑选了1个好方法。

我写了这个方法,以便将xml字符串转换为对象:

private object Deserializer(Type type)
{
    object instance = null;
    try
    {
        XmlSerializer xmlSerializer = new XmlSerializer(type);
        using (StringReader stringreader = new StringReader(somestring))
        {
            instance = (type)xmlSerializer.Deserialize(stringreader);
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }

    return instance;
} 

但在这里:

instance = (type)xmlSerializer.Deserialize(stringreader);

此错误显示:找不到类型或命名空间名称'type'(您是否缺少using指令或程序集引用?)我该如何解决?



1> Guy Levin..:

你不能强制转换为"类型"你需要指定这样的确切类型(对于字符串):

(string)xmlSerializer.Deserialize(stringreader);

也许考虑使用这样的泛型函数:

private T Deserializer()
{
    T instance = null;
    try
    {
        var xmlSerializer = new XmlSerializer(typeof(T));
        using (var stringreader = new StringReader(somestring))
        {
            instance = (T)xmlSerializer.Deserialize(stringreader);
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }

    return instance;
} 

而不是像这样调用函数:

var instance = xmlSerializer.Deserialize();

如果要仅在运行时指定类型,可以使用:

instance = Convert.ChangeType(xmlSerializer.Deserialize(stringreader), type);

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有