2012-10-04 39 views
5

有没有办法在运行时设置对象或类的xmlroot?我可以通过代码而不是属性指定XMLRoot吗?

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

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

回答

9

是的!简单地说:

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

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

相关问题