2009-01-30 8 views
5

मैं एक कस्टम क्लास को क्रमबद्ध करने की कोशिश कर रहा हूं जिसे उसी नाम के कई तत्वों का उपयोग करने की आवश्यकता है।
मैंने xmlarray का उपयोग करने का प्रयास किया है, लेकिन यह उन्हें अन्य तत्वों में लपेटता है।XmlSerialization संग्रह ऐरे

मैं चाहता हूं कि मेरा एक्सएमएल इस तरह दिखने लगे।

<root> 
    <trees>some text</trees> 
    <trees>some more text</trees> 
</root> 

मेरे कोड:

[Serializable(), XmlRoot("root")] 
public class test 
{ 
     [XmlArray("trees")] 
     public ArrayList MyProp1 = new ArrayList(); 

     public test() 
     { 
      MyProp1.Add("some text"); 
      MyProp1.Add("some more text"); 
     } 
} 
+0

क्या आपने XMLArray के साथ विशेषता XmlArrayItem (typeof (System.String)) सेट करने का प्रयास किया है? – Perpetualcoder

+0

हाँ, यह कुछ पाठ कुछ और पाठ

+0

अच्छा सवाल है, बुरा शीर्षक के नीचे एक्सएमएल की तरह कुछ पैदा करता है। शीर्षक "XmlSerializer के साथ एक सरणी/सूची/संग्रह को फ़्लैट करने के लिए कैसे होना चाहिए" –

उत्तर

7

सिर्फ [XmlElement("trees")] उपयोग करके देखें:

[Serializable(), XmlRoot("root")] 
public class test 
{ 
    [XmlElement("trees")] 
    public List<string> MyProp1 = new List<string>(); 

    public test() 
    { 
     MyProp1.Add("some text"); 
     MyProp1.Add("some more text"); 
    } 
} 

नोट मैं List<string> को ArrayList बदल उत्पादन को साफ करने के लिए; 1.1 में, StringCollection एक और विकल्प होगा, हालांकि इसमें अलग-अलग केस-संवेदनशीलता नियम हैं।

+0

यह पूरी तरह से धन्यवाद –

+0

धन्यवाद! ठीक वही जो मेरे द्वारा खोजा जा रहा था! –

0

:

xsd.exe है (संपादन obsoleted - मैं xsd.exe का उपयोग करने में भावी पीढ़ी के लिए यह जा रहा हूँ - मेरे second post ([XmlElement]) जाने का रास्ता है) तुम्हारा मित्र। एक फ़ाइल() में एक्सएमएल आप चाहते हैं कॉपी करें, फिर का उपयोग करें:

xsd foo.xml 
xsd foo.xsd /classes 

अब foo.cs पढ़ा; आप इसे या तो सीधे, या केवल प्रेरणा के लिए उपयोग कर सकते हैं।

(संपादित करें: उत्पादन कतरना - मददगार नहीं किसी भी अधिक)

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