2013-12-10 2 views
0

Я бы не спросил, но я понятия не имею, что случилось снова. Iv сохранены транспортные средства в файл XML, и когда пользователь открывает программу я хочу deserialize.when я запустить его я получаю это на последней строке в методе загрузкиXamlParseException при десериализации файла xml

'System.Windows.Markup.XamlParseException' {"'The invocation of the constructor on type 'SD2CW2.MainWindow' that matches the specified binding constraints threw an exception.'} 

это мои загрузки/сохранения методы

private void Load() 
    { 

     XmlSerializer SerializerObj = new XmlSerializer(typeof(Vechicle)); 

     // Reading a file requires a FileStream. 
     FileStream fs = new FileStream(filepath); 
     Vechicle = ((List<Vechicle>)SerializerObj.Deserialize(fs)); 
    } 
    //Save the objects 
    private void Save() 
    { 
     // Create a new file stream to write the serialized object to a file 
     TextWriter WriteFileStream = new StreamWriter(filepath); 

     Type [] extraTypes= new Type[2]; 
     extraTypes[0] = typeof(Tour); 
     extraTypes[1] = typeof(Vechicle); 
     // Create a new XmlSerializer instance with the type of List<Journey> and my addition types 
     XmlSerializer SerializerObj = new XmlSerializer(typeof(List<Journey>),extraTypes); 

     //serialising my journey list 
     SerializerObj.Serialize(WriteFileStream,Journey); 
     SerializerObj = new XmlSerializer(typeof(List<Vechicle>)); 
     //serialising my vechicle list 
     SerializerObj.Serialize(WriteFileStream, Vechicle); 
     // Cleanup 
     WriteFileStream.Close(); 
    } 

этот XML

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfJourney xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /><?xml version="1.0" encoding="utf-8"?> 
<ArrayOfVechicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Vechicle> 
    <Id>1</Id> 
    <Registration>1</Registration> 
    </Vechicle> 
    <Vechicle> 
    <Id>2</Id> 
    <Registration>2</Registration> 
    </Vechicle> 
    <Vechicle> 
<Id>3</Id> 
<Registration>3</Registration> 

+0

Почему вы сериализуете два разных объекта (Путешествие, Транспортное средство) в один и тот же файл? Только одна из этих операций Serialize сопровождается флешем на диск; это может быть причиной недостающих тегов, упомянутых в ответе @splrs. – groverboy

+0

@groverboy iv изменил его, чтобы он сериализовал два файла xml, теперь теги правильны, но им все еще не удается загрузить. – James

+0

Если теги были неправильными, как указано в ответе @splrs, тогда вы должны принять этот ответ. Если вы все еще не можете загрузить, создайте новый вопрос и опубликуйте обновленный код. – groverboy

ответ

1

Это весь XML-файл? Потому что он неполный.

Если да, то добавьте

</Vechicle> 
</ArrayOfVechicle> 
</ArrayOfJourney> 

Итак, вы по крайней мере, есть хорошо сформированный XML-документ, чтобы начать с.

Смежные вопросы