2010-04-12 14 views
7

का उपयोग करके XmlAttributes के ऑर्डर को निर्दिष्ट करने के लिए कैसे करें XmlElement में "ऑर्डर" विशेषता है जिसका उपयोग आप अपने गुणों के सटीक क्रम (एक दूसरे के संबंध में) निर्दिष्ट करने के लिए कर सकते हैं जब XmlSerializer का उपयोग करके क्रमबद्ध करते हैं।XmlSerializer

क्या XmlAttribute के लिए एक समान बात है? मैं सिर्फ सच में

<MyType start="joe" end="bob" /> 

यह सिर्फ पठनीयता के लिए है, मेरे अपने लाभ के लिए

<MyType end="bob" start="joe" /> 

की तरह कुछ की विशेषताओं के क्रम सेट करना चाहते हैं।

उत्तर

6

आप नहीं करते हैं, क्योंकि एक्सएमएल में एक्सएमएल में कोई ऑर्डर नहीं है (एक्सएमएल सिफारिश का सेक्शन 3.1 कहता है: "ध्यान दें कि स्टार्ट-टैग या रिक्त-एलिमेंट टैग में विशेषता विनिर्देशों का क्रम महत्वपूर्ण नहीं है।")।

+2

मुझे कुछ बिंदु देगा। हालांकि मुझे आपके द्वारा उद्धृत उस कथन से असहमत होना है (मुझे पता है कि वे आपके शब्द नहीं हैं), आदेश मेरे लिए महत्वपूर्ण है। हां यह अभी भी किसी भी तरह से काम करेगा, लेकिन मुझे परवाह है और मैं ऑर्डर सेट करना चाहता हूं: '( – demoncodemonkey

+2

एक तरफ, तथाकथित कैननिकल एक्सएमएल मौजूद है जहां विशेषताओं को लेक्सिकोग्राफिक रूप से क्रमबद्ध किया जाता है, http: //www.w3 देखें। संगठन/टीआर/एक्सएमएल-सी 14 एन 11/# डॉक्यूमेंटऑर्डर –

+0

मैं देखता हूं। आप क्या कर सकते हैं XmlWriter के लिए अपना स्वयं का कार्यान्वयन या रैपर है और फिर उन्हें फिट करने के बाद उन्हें सॉर्ट करें। – Lucero

1

सी # में, जहां तक ​​मुझे मिला है, गुणों का क्रम क्रमबद्ध क्रम में क्रमबद्ध किया गया है कि उन्हें कक्षा में परिभाषित किया गया है।

इस सवाल यहाँ करने के लिए अपने जवाब देखें: https://stackoverflow.com/a/21468092/607117

7

मेरे अनुभव से, विशेषताओं की क्रमबद्धता के आदेश आदेश आप अपनी सार्वजनिक संपत्तियों को परिभाषित के समान है। हालांकि, यदि आप एक ही कक्षा में फ़ील्ड वाले गुणों को जोड़ते हैं, उदा।

[Serializable()] 
public class MyClass 
{ 
    [XmlAttribute("ADoubleProp")] 
    public double ADoubleProp { get; set; } 

    [XmlAttribute("AnIntField")] 
    public int AnIntField = 42; 
} 

तब फ़ील्ड गुणों और फिर गुणों के रूप में पहले लिखे जाते हैं। उपरोक्त कोड इस तरह के

<MyClass AnIntField="42" ADoubleProp="0" />