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

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

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

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

是! 只是:

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

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