Как обрабатывать ноль в XML и C # - PullRequest
5 голосов
/ 02 мая 2011

предположим, что я пытаюсь десериализовать xml в свой класс, и если какое-либо значение является нулевым или пустым для десятичной или даты-времени, то как обработать нулевое значение.

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

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

предположим, если BirthDate или Salary равен нулю или пуств XML тогда, как справиться с этим во время десериализации.нужно решение.спасибо.

Ответы [ 4 ]

6 голосов
/ 02 мая 2011

У вас есть две опции, как указано здесь в XmlSerializer Class

Укажите System.ComponentModel.DefaultValueAttribute , чтобы указать значение по умолчанию

[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".

2 голосов
/ 02 мая 2011

Использование типа Nullabe решит проблему легко.

1 голос
/ 02 мая 2011

Замените "double" на эквивалентный типу "double?" должен сделать это. Тогда просто разберитесь с отсутствием значения в вашем объекте.

В качестве альтернативы вы можете реализовать свойство shim:

XML десериализация даты с пустым значением

0 голосов
/ 02 мая 2011

Вы можете использовать блок приложения для проверки Microsoft Enterprise Library. Или просто измените тип на Nullable.

...