क्या XmlSerializer
को आदिम वर्ग के सदस्यों (जैसे स्ट्रिंग गुण) को एक्सएमएल गुणों के रूप में क्रमबद्ध करने का कोई तरीका नहीं है, एक्सएमएल तत्वों के रूप में नहीं, के बिना प्रत्येक संपत्ति घोषणा के सामने [XmlAttribute]
लिखना है? I.e. क्या कोई वैश्विक स्विच है जो XmlSerializer
को सभी आदिम वर्ग के सदस्यों को एक्सएमएल विशेषताओं के रूप में क्रमबद्ध करने के लिए कहता है?XmlSerializer को डिफ़ॉल्ट रूप से तत्वों के बजाय गुण उत्पन्न करने का कारण कैसे बनें
मान लें कि हमारे पास निम्न वर्ग है:
public class Person
{
public string FirstName
{
...
}
public string LastName
{
...
}
}
फिर XmlSerializer
डिफ़ॉल्ट रूप से इस कोड को उत्पन्न करता है:
<Person>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
</Person>
जो मैं चाहता हूं, हालांकि, यह कोड है:
<Person FirstName="John" LastName="Doe"/>
फिर से: मैं [XmlAttribute]
के बिना ऐसा करना चाहता हूं (या XmlAttributeOverrides
के बिना, जो और भी काम करेगा)।
एक संभावित समाधान एक सामान्य पोस्टप्रोसेसिंग चरण का उपयोग करना होगा जो तत्वों को तत्वों में परिवर्तित करने के लिए एक एक्सएसएलटी ट्रांसफॉर्म लागू करता है। लेकिन मुझे आश्चर्य है कि एक आसान समाधान है या नहीं।
एनरिको का जवाब प्रश्न का समाधान प्रतीत होता है, लेकिन यह निश्चित रूप से अधिक जटिल और कम वांछनीय है जो आप टालना चाहते हैं। शायद आप हमें बता सकते हैं कि आप उन विधियों का उपयोग क्यों नहीं कर सकते हैं, ताकि हम जान सकें कि, विशेष रूप से, आप से परहेज कर रहे हैं? –
मुझे बाहरी सिट्सम के साथ डेटा का आदान-प्रदान करने की आवश्यकता है जिसके लिए एक विशिष्ट XML प्रारूप की आवश्यकता है। उस प्रारूप में, सरल डेटा प्रकारों को गुणों के रूप में दर्शाया जाता है, जटिल डेटा प्रकार (उदा। सूचियां) विशेषता के रूप में दर्शाए जाते हैं।डेटा मॉडल में लगभग 50 वर्ग और 500 विशेषताएं हैं। मैं इससे बचना चाहता हूं कि मुझे प्रत्येक विशेषता के सामने [XmlAttribute] लिखना है। –
@ केली डब्ल्यू इस मामले में एक ही स्थान (जैसे बेस क्लास) में सामान्य एक्सएमएल क्रमबद्धता तर्क होना निश्चित रूप से समझ में आता है, क्योंकि यह चीजें रखता है [DRY] (http://en.wikipedia.org/wiki/Don't_repeat_yourself)। –