2009-09-05 19 views
6

? Estoy tratando de serializar algunos objetos obtenidos de una .NET Lib de terceros a un archivo XML.¿Cómo ignoro un atributo [XMLIgnore]

Cuando Go To Definition para el objeto, algunas de las propiedades de ese objeto se marcan como [XMLIgnore]

¿Hay alguna manera de decirle a mi System.Xml.Serialization.XmlSerializer ignorar el hecho de que algunas propiedades tienen ese atributo y que deben serializar todo en el objeto.

probablemente podría obtener el fuente y compilarlo sin los atributos XMLIgnore pero sería bueno si tenían algún XmlSerializer bonita propiedad de anulación como

XmlSerializer xmls = new XmlSerializer(
    typeof(MyObject), 
    Settings.DoNotApplyXMLAttributeRules 
); 

Gracias de antemano


EDITAR

Han intentado XmlAttributeOverrides como se sugirió pero no h arando mucha alegría Aquí está la definición de objeto (que es del FlickrAPI una foto)

[Serializable] 
public class Photo 
{ 
    //Some code omitted 
    [XmlIgnore] 
    public string LargeUrl { get; } 

} 

Y aquí está el código de serializador que he escrito ... todavía no funciona ...

XmlWriter xtw = XmlWriter.Create(Server.MapPath("~/App_Data/Data.xml")); 

XmlAttributes photoAttributes = new XmlAttributes(); 
photoAttributes.XmlIgnore = false; 

XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides(); 
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes); 

XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides); 

Respuesta

12

uso:

XmlAttributeOverrides 

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx

Editar: (A raíz de la pregunta EDITAR)

La propiedad debe ser pública y tener un getter y un setter a serializar.

http://msdn.microsoft.com/en-us/library/182eeyhh%28VS.85%29.aspx

((ver primera nota))

+0

que han intentado pero no alegría. Cualquier otra sugerencia sería apreciada. He agregado el código a la pregunta original en caso de que esté haciendo algo tonto. –

+1

LargeUrl no tiene un setter, por lo que incluso sin el atributo XmlIgnore, no se serializará. – manji

+1

ah bien. Lo he solucionado creando una clase proxy para almacenar los valores y luego serializarlos por separado. –

Cuestiones relacionadas