2011-05-02 27 views
5

supongamos que estoy tratando de deserializar xml a mi clase y si algún valor es nulo o vacío para decimal o datetime, entonces cómo manejar el nulo.Cómo manejar null en xml y C#

[XmlElement(ElementName = "Salary" , typeof(double))] 
public string Salary { get; set; } 

[XmlElement(ElementName = "BirthDate" , typeof(DateTime))] 
public string Phone { get; set; } 

Supongamos que si fecha de nacimiento o salario es nulo o vacío en XML a continuación cómo manejar la situación en el momento de deserialización. necesita solución Gracias.

Respuesta

6

tiene dos opciones como se especifica aquí en XmlSerializer Class

Especifique un System.ComponentModel.DefaultValueAttribute para especificar el valor predeterminado

[System.ComponentModel.DefaultValueAttribute ("0")] 
[XmlElement(ElementName = "Salary" , typeof(double))] 
public string Salary { get; set; } 

[System.ComponentModel.DefaultValueAttribute ("02-May-2011")] 
[XmlElement(ElementName = "BirthDate" , typeof(datetime))] 
public string Phone { get; set; } 

Another option is to use a special pattern to create a Boolean field recognized by the XmlSerializer, and to apply the XmlIgnoreAttribute to the field. The pattern is created in the form of propertyNameSpecified. For example, if there is a field named "MyFirstName" you would also create a field named "MyFirstNameSpecified" that instructs the XmlSerializer whether or not to generate the XML element named "MyFirstName".

1

Reemplazar "doble" con su tipo anulable equivalente "doble"? Deberías hacerlo. Entonces simplemente trate con la falta de un valor en su objeto.

alternativa, se puede aplicar una propiedad cuña:

XML Deserialization of a date with an empty value

+0

lo que es propiedad de cuña. discutir en detalle. – Mou

2

Hacer uso de Nullabe tipo de problema se resolverá fácilmente.

+0

cómo agregar el tipo Nullabe para mi propiedad. espectáculo de plzz – Mou

+0

@ user728750 - me gusta esto público Nullable Bar {get; conjunto; } –

0

Puede usar el bloque de aplicación de validación de Microsoft Enterprise Library. O simplemente cambie el tipo a Nullable.