[英]deserialize XML to List of objects
我有一個用ToDo對象填充並保存到XML的列表。 這很完美。 將XML反序列化為ToDo對象列表時遇到問題。 我知道類似的問題已經很少了,但是沒有一個問題對我有幫助,因此,我在寫。
ToDo對象類:
public class ToDo
{
public string ToDoString;
public DateTime Date;
}
序列化和反序列化的主要程序類和方法:
static class Program
{
static List<ToDo> ToDoList = new List<ToDo>();
public static void Serialize(string toDoString)
{
// Create and Initialise the object
ToDo newToDo = new ToDo();
newToDo.ToDoString = toDoString;
newToDo.Date = DateTime.Now;
// Add the object to the List
ToDoList.Add(newToDo);
// Serialize List and save to XML
XmlSerializer mySerializer = new XmlSerializer(ToDoList.GetType());
// To write to a file, create a StreamWriter object.
StreamWriter myWriter = new StreamWriter("myXML.xml");
mySerializer.Serialize(myWriter, ToDoList);
myWriter.Close();
}
public static void Deserialize()
{
// This code was originally wrote to deserialize single object. Now I need to deserialize List of objects and this code doesn't work.
XmlSerializer myDeserializer = new XmlSerializer(ToDoList.GetType());
FileStream myFileStream = new FileStream("myXML.xml", FileMode.Open);
deserializeToDo = (ToDo) // Problems start here
myDeserializer.Deserialize(myFileStream);
myFileStream.Close();
}
}
那么,如何將XML反序列化為ToDo對象列表?
非常感謝您的幫助。
以下對我有用
var loadedData = (List<ToDo>)myDeserializer.Deserialize(myFileStream);
我只是在Deserialize
更改了這一行
XmlSerializer myDeserializer = new XmlSerializer(typeof(List<ToDo>));
FileStream myFileStream = new FileStream("myXML.xml", FileMode.Open);
var loadedData = (List<ToDo>)myDeserializer.Deserialize(myFileStream);
myFileStream.Close();
給你的提示
public static void Deserialize()
{
var myDeserializer = new XmlSerializer(typeof(List<ToDo>));
List<ToDo> ToDoList;
using (var myFileStream = new FileStream("myXML.xml", FileMode.Open))
{
ToDoList = (List<ToDo>)myDeserializer.Deserialize(myFileStream);
}
}
using
塊將為您關閉流。
您應該使用以下語句反序列化它:
var deserializedToDoList = (List<ToDo>)myDeserializer.Deserialize(myFileStream);
那應該做的工作。
刪除帶有注釋的代碼行// //問題從這里開始。
像這樣捕獲myDeserializer.Deserialize(myFileStream)的輸出:
public static void Deserialize()
{
XmlSerializer myDeserializer = new XmlSerializer(ToDoList.GetType());
FileStream myFileStream = new FileStream("myXML.xml", FileMode.Open);
var listOfTodos = (List<ToDo>)myDeserializer.Deserialize(myFileStream);
myFileStream.Close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.