2012-10-04 9 views
5

¿Hay alguna forma de establecer la raíz xml de un objeto o clase durante el tiempo de ejecución?¿Puedo especificar XMLRoot mediante código en lugar de atributos?

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

No tengo la opción de modificar la clase MyRoot en este caso; entonces, me gustaría especificar que deseo que el nombre raíz se llame "datos" antes de serializar el objeto a XML usando XmlSerializer.

Respuesta

9

Sí! Simplemente:

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

O de forma más completa, véase XmlAttributeOverrides. Sin embargo, con cualquiera de estos usted debe caché y reutilizar la instancia del serializador; de lo contrario, tendrá fugas de ensamblados.

Cuestiones relacionadas