C# - 使用XML水合现有对象

时间:2013-03-15 13:58:04

标签: c# xml

我知道我可以使用Linq将字段从XML映射到预先存在的对象中的字段。 .NET Framework(或其他库)中是否有任何函数可以减少手动操作。

我想写(并让HydrateFromXml表现得像AutoMapper一样):

var myObject = new MyObject(/*ctor args*/);

myObject = myObject.HydrateFromXml(string xml);

修改

我可以在这里使用装饰器模式或简单的包装器对象吗?直接反序列化为一个由抽象包装的类型,允许我需要的细粒度构造控制?

2 个答案:

答案 0 :(得分:5)

您可以使用XmlSerializer执行此操作:

var serializer = new XmlSerializer(typeof(MyObject));

object result;
using (TextReader reader = new StringReader(xml))
{
    result= serializer.Deserialize(reader);
}

var myObject = result as MyObject;

对于您的对象实例已存在的情况,请检查此问题:Deserializing properties into a pre-existing object

答案 1 :(得分:1)

作为一个快速选项,您可以使用AutoMapper。使用XmlSerializer反序列化为新实例,然后使用AutoMapper从新创建的实例映射到所需的实例。