2009-04-02 12 views
18

Tengo un objeto que serializo en XML. Si una de las propiedades en el objeto es nula, la serialización nativa ignora para agregar esto como el atributo. Es este comportamiento normal, si es así, ¿hay alguna manera de que pueda anularlo?Serialización XML y valor nulo - C#

ejemplo:

public class Test 
{ 
    [XmlAttribute] 
    public string value {set; get; } 

    [XmlAttribute] 
    public string key {set; get; } 
} 

Cuando el valor es nulo, consigo

<Root> 
    <Test key="blah"> 
</Root> 

Respuesta

33
+0

Me gusta y se puede aplicar a un elemento individual. ¿Hay alguna forma de especificar que para una clase dada con una gran cantidad de campos (digamos 1,000) que este es el valor predeterminado para todos los campos sin tener que tocar todos y cada uno de los campos? – froggythefrog

+0

Por cierto, no es que tenga tantos campos en una sola clase. De hecho, tengo toneladas de clases para un servicio WCF y quiero crear mensajes REST serialándolos. Quiero que el servicio incluya todos los campos, independientemente de su valor o falta de ellos. – froggythefrog

+1

Esto es una preocupación de marco (sus servicios == framework :)). Es decir. si desea que todos sus servicios se comporten de la misma manera, no cambie las clases de datos. Cambiar el serializador utilizado. Puede enganchar en WCF, y reemplazar el serializador predeterminado con el suyo. –

1

En la respuesta de Sunny caso simplemente no se ajusta a usted, usted puede personalizar el proceso de serialización implementando la interfaz IXmlSerializable