Нужно сериализовать несколько коллекций Код | [Serializable] public class ChartItem : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } private double _Item; private DateTime _Time;
public double Item { get { return _Item; } set { _Item = value; OnPropertyChanged("Item"); } } public DateTime Time { get { return _Time; } set { _Time = value; OnPropertyChanged("Time"); } } public ChartItem() { Time = MainWindow.Instance.Trader.Trader.MarketTime; } public ChartItem(double _item, DateTime _time) { Item = _item; Time = _time; } }
|
Код | XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<ChartItem>)); using (StreamWriter stream = new StreamWriter("D:\\appgdata.xml")) { serializer.Serialize(stream, rgo); serializer.Serialize(stream, rdgo); serializer.Serialize(stream, rs); serializer.Serialize(stream, rp); serializer.Serialize(stream, cc); }
|
Получается вот такой файл Код | <?xml version="1.0" encoding="utf-8"?> <ArrayOfChartItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ChartItem> <Item>53190</Item> <Time>2011-06-15T10:20:13.40625+04:00</Time> </ChartItem> <ChartItem> <Item>106380</Item> <Time>2011-06-15T10:20:39.4375+04:00</Time> </ChartItem> ... </ArrayOfChartItem><?xml version="1.0" encoding="utf-8"?> <ArrayOfChartItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ChartItem> <Item>342</Item> <Time>2011-06-15T10:20:39.4375+04:00</Time> </ChartItem> <ChartItem> <Item>1083</Item> <Time>2011-06-15T10:20:40.4375+04:00</Time> </ChartItem> ... </ArrayOfChartItem><?xml version="1.0" encoding="utf-8"?> <ArrayOfChartItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ChartItem> <Item>57</Item> <Time>2011-06-15T10:20:40.4375+04:00</Time> </ChartItem> <ChartItem> <Item>114</Item> <Time>2011-06-15T10:20:44.421875+04:00</Time> </ChartItem> ... </ArrayOfChartItem><?xml version="1.0" encoding="utf-8"?> <ArrayOfChartItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ChartItem> <Item>0</Item> <Time>2011-06-15T10:19:57.53125+04:00</Time> </ChartItem> <ChartItem> <Item>342</Item> <Time>2011-06-15T10:20:13.40625+04:00</Time> </ChartItem> ... </ArrayOfChartItem><?xml version="1.0" encoding="utf-8"?> <ArrayOfChartItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ChartItem> <Item>94.65</Item> <Time>2011-06-15T10:19:56.015625+04:00</Time> </ChartItem> <ChartItem> <Item>94.67</Item> <Time>2011-06-15T10:19:56.53125+04:00</Time> </ChartItem> .... </ArrayOfChartItem>
|
При десериализации Код | XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection<ChartItem>)); using (StreamReader stream = new StreamReader("D:\\appgdata.xml")) { rgo = (ObservableCollection<ChartItem>)serializer.Deserialize(stream); rdgo = (ObservableCollection<ChartItem>)serializer.Deserialize(stream); rs = (ObservableCollection<ChartItem>)serializer.Deserialize(stream); rp = (ObservableCollection<ChartItem>)serializer.Deserialize(stream); cc = (ObservableCollection<ChartItem>)serializer.Deserialize(stream); }
|
в первой же строчке rgo = (ObservableCollection<ChartItem>)serializer.Deserialize(stream) вылетает ексепшн - что-то там ему не нравится в xml-документе. конкретнее: Цитата | Message=Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it. Line 11, position 22.
|
там находится знак вопроса, < ?xml version="1.0" encoding="utf-8"?> Можно ли вообще несколько однотипных коллекций сериализовать в один файл или там какие-то нюансы? Это сообщение отредактировал(а) dAlex - 15.6.2011, 11:07
--------------------
eof()
|