2009-07-13 3 views
46

Bir XML dosyası için bir datetime yyyyMMdd biçimine serileştirmem/deserialize etmem gerekiyor. Bunun için kullanabileceğim bir özellik/çözüm var mı?Tarihin XmlSerialization formatı belirtebilir misiniz?

+0

Değişkenin alıcısını ve ayarlayıcısını değiştirebilirsiniz. Mesela ben bir enum Sex {Bilinmeyen, Kadın, Erkek} vardı ve ben erkek ve f dişi içine biçimlendirme bir string dizisi vardı. Xml serializer da tam enum isminin f ve m inseatd yazdı. İyi çalıştı ama bunun için neredeyse hiç pratik kullanım yok. – BlueWizard

cevap

55

Hayır, yok. Bu formatta ise, o zaman XML Şeması ile ilgili geçerli bir dateTime değildir. aşağıdaki gibi

Yapabileceğiniz en iyisi:

[XmlIgnore] 
public DateTime DoNotSerialize {get;set;} 

public string ProxyDateTime { 
    get {return DoNotSerialize.ToString("yyyyMMdd");} 
    set {DoNotSerialize = DateTime.Parse(value);} 
} 
+8

Not kaydetme: hem bir get/set mevcut olmalıdır. Mülkümün neden serileştirilmediğini bir buçuk saat hata ayıkladım. 'Set' olmadığım ortaya çıktı, çünkü kendime şöyle düşündüm: “Bu değeri asla değiştirmeyeceğim; Neden bir set yazmaktan sıkıldınız? ' – spamguy

+1

@spamguy: XmlSerializer yalnızca ortak özellikleri hem genel kullanıma hem de herkese açık kümeyle işler. –

18

XmlElementAttribute #DataType gerekenler sağlamak olmalıdır:

[XmlElement(DataType="date")]  
public DateTime Date1 {get;set;} 

Bu DATE1 uygun xml date biçimine tefrika özelliği alacak.

+3

Hayır, sorun standart olmayan bir xml tarih biçimine serileştirmem gerektiğidir. Kabul edilen çözüm benim için gittiğim şey. – cjk

+1

Bu benim için çalışmıyor, bir yapı hatası veriyor. [XmlElement (DataType = "tarih")] çalışır. –

+0

Teşekkürler. Sorunumu çözdüm. Zaman bileşenini kaldırmaya çalışıyordum. Şerefe! –