C# XML сериализация не пишет ноль
Когда я сериализую AC# объект с нулевым DateTime в нем, есть ли способ оставить нулевое значение из файла XML вместо того, чтобы иметь
<EndDate d2p1:nil="true" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance" />
3 ответа
Вы можете использовать Specified
расширенное свойство, чтобы пропустить нулевые значения (или любое другое значение, если на то пошло). По сути, создайте другое свойство с тем же именем, что и у сериализованного свойства со словом Specified
добавлен в конец как логическое значение. Если Specified
свойство true
затем свойство, которым оно управляет, сериализуется. В противном случае, если это false
другое свойство полностью исключено из файла xml:
[XmlElement("EndDate")]
public DateTime? EndDate { get; set; }
[XmlIgnore]
public bool EndDateSpecified { get {
return (EndDate != null && EndDate.HasValue); } }
это позволяет вам сказать, хотите ли вы пустой элемент для нулевых объектов
Я знаю, что это старая тема, но в случае, если кто-то еще найдет это:
Вы также можете реализовать открытый метод для каждого свойства, чтобы проверить, должно ли оно быть сериализовано или нет. Конвенция это:
bool ShouldSerialize[YourPropertyName]();
Например, в вашем случае
public bool ShouldSerializeEndDate(){
return (EndDate != null && EndDate.HasValue);
}
Сделайте это для каждого свойства, которое вы хотите при желании сериализовать.