को Serializing मैं एक सी # .NET 3.5 आवेदन जहां मैं एक वर्ग एक List<>
एक्सएमएल युक्त क्रमानुसार करने करना चाहते हैं। मेरी कक्षा इस तरह दिखता है:एक सूची <> एक ICollection <के रूप में निर्यात> एक्सएमएल
[XmlRoot("Foo")]
class Foo
{
private List<Bar> bar_ = new List<Bar>();
private string something_ = "My String";
[XmlElement("Something")]
public string Something { get { return something_; } }
[XmlElement("Bar")]
public ICollection<Bar> Bars
{
get { return bar_; }
}
}
तो मैं इसे इस तरह से पॉप्युलेट:
Bar b1 = new Bar();
// populate b1 with interesting data
Bar b2 = new Bar();
// populate b2 with interesting data
Foo f = new Foo();
f.Bars.Add(b1);
f.Bars.Add(b2);
और फिर इस तरह यह क्रमानुसार:
using (System.IO.TextWriter textWriter = new System.IO.StreamWriter(@"C:\foo.xml"))
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Foo));
serializer.Serialize(textWriter, f);
}
मैं एक फ़ाइल है कि इस तरह दिखता है मिलती है:
<Foo>
<Something>My String</Something>
</Foo>
लेकिन, मैं जो चाहता हूं एक्स है एमएल कि इस तरह दिखता है:
<Foo>
<Something>My String</Something>
<Bar>
<!-- Data from first Bar -->
</Bar>
<Bar>
<!-- Data from second Bar -->
</Bar>
</Foo>
क्या मैं List<>
एक्सएमएल में प्रदर्शित करने के पाने के लिए क्या करना होगा?
का उपयोग करें मुझे विश्वास नहीं है कि आप एक इंटरफ़ेस 'XmlSerialize' कर सकते हैं। आप वैसे भी 'ICollection' के रूप में serialize क्यों करना चाहते हैं? 'सूची' के रूप में क्रमबद्ध करें और उपभोक्ता को वापस 'आईसीओलेक्शन ' ... ??? –
IAbstract
@IAbstract - मुझे यकीन नहीं है कि मैं समझता हूं। क्या आप '[XmlElement (" Bar ")] टैग के साथ' निजी सूची बार_' चिह्नित करना चाहते हैं? यह आउटपुट नहीं बदलता है। साथ ही, 'एक्सएमएलएसरियललाइज़र' दस्तावेज से पता चलता है कि यह 'आईन्यूमेरेबल' और 'आईसीओलेक्शन' इंटरफेस दोनों के साथ काम करता है। http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer%28v=VS.90%29.aspx –
PaulH
मुझे लगता है कि IAbstract में यह है - आप एक इंटरफ़ेस को क्रमबद्ध नहीं कर सकते हैं। तो इसके बजाय आपको फू को बदलना चाहिए ताकि बार्स एक सूची हो, न कि आईसीओलेक्शन –