我可以通过代码而不是属性指定XMLRoot吗?

时间:2012-10-04 22:19:44

标签: c# xml-serialization

有没有办法在运行时设置对象或类的xmlroot?

[XmlRoot("data")]
public class MyRoot {
    [XmlElement("bar")]
    public List<RemoteHost> Hosts {get;set;}
}

在这种情况下,我无法修改MyRoot类;所以,我想指定在使用XmlSerializer将对象序列化为XML之前,我希望将根名称称为“数据”。

1 个答案:

答案 0 :(得分:10)

是的!简单地:

var serializer = new XmlSerializer(typeof(MyRoot),
    new XmlRootAttribute("data"));

或者更完整,请参阅XmlAttributeOverrides。但是,对于其中任何一个,您必须缓存并重用序列化程序实例,否则您将泄漏程序集。