2009-07-13 9 views
46

मुझे किसी XML फ़ाइल के लिए yyyyMMdd प्रारूप में डेटाटाइम को क्रमबद्ध/deserialize करने की आवश्यकता है। क्या इसके लिए कोई विशेषता/कामकाज मैं उपयोग कर सकता हूं?क्या आप डेटाटाइम के XmlSerialization के प्रारूप को निर्दिष्ट कर सकते हैं?

+0

आप चर के गेटर और सेटर में हेरफेर कर सकते हैं। उदाहरण के लिए मेरे पास एक enum लिंग {अज्ञात, महिला, पुरुष} था और मेरे पास एक स्ट्रिंग सेटर था जो पुरुष में पुरुष और एफ में स्वरूपण करता था। एक्सएमएल सीरियलाइज़र ने पूर्ण enum नाम की एफ और एम की भीड़ लिखी। ठीक काम किया लेकिन इसके लिए लगभग कोई व्यावहारिक उपयोग नहीं है। – BlueWizard

उत्तर

55

नहीं, ऐसा नहीं है। यदि यह उस प्रारूप में है, तो यह वैध दिनांक नहीं है जब तक कि XML स्कीमा का संबंध है।

सबसे अच्छा आप कर सकते हैं इस प्रकार है:

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

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

ध्यान देने योग्य मूल्य: दोनों प्राप्त/सेट मौजूद होना चाहिए। मैंने आधे घंटे डिबगिंग बिताई क्यों मेरी संपत्ति को क्रमबद्ध नहीं किया जा रहा था। यह पता चला कि मेरे पास कोई 'सेट' नहीं था, क्योंकि मैंने खुद को सोचा था, 'मैं कभी भी इस मूल्य को नहीं बदलूंगा; एक सेट लिखना परेशान क्यों? – spamguy

+1

@spamguy: XmlSerializer केवल सार्वजनिक संपत्तियों और सार्वजनिक सेट दोनों के साथ सार्वजनिक गुणों को संभालता है। –

18

XmlElementAttribute #DataType प्रदान करना चाहिए कि तुम क्या जरूरत है:

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

यह तिथि 1 संपत्ति उचित xml date प्रारूप करने के लिए धारावाहिक मिल जाएगा।

+3

नहीं, समस्या यह है कि मुझे इसे गैर मानक मानक XML प्रारूप में क्रमबद्ध करने की आवश्यकता है। स्वीकृत समाधान वह है जो मैंने किया था। – cjk

+1

यह मेरे लिए काम नहीं करता है, एक बिल्ड त्रुटि देता है। [XmlElement (DataType = "date")] काम करता है। –

+0

धन्यवाद। मेरी समस्या फिक्स्ड मैं समय घटक को हटाने की कोशिश कर रहा था। चीयर्स! –

संबंधित मुद्दे