【发布时间】:2015-06-09 17:43:21
【问题描述】:
所以我需要 xml 序列化一个通用对象列表,其中该对象由另一个列表和一个字符串组成。
这就是我现在得到的
<?xml version="1.0" encoding="UTF-8"?>
-<ArrayOfRecept xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Recept>
<Namn>Nomnom</Namn>
</Recept>
-<Recept>
<Namn>Ännu mer nomnom</Namn>
</Recept>
</ArrayOfRecept>
这里只有字符串值被序列化,而不是我的列表
这是我要序列化的对象
public class Recept
{
private ListHanterare<string> ingredienser;
private string namn;
public Recept()
{
ingredienser = new ListHanterare<string>();
}
public ListHanterare<string> Ingredienser
{
get { return ingredienser; }
}
public string Namn
{
get { return namn; }
set { namn = value; }
}
}
所以我将有一个我想要 xml 序列化的 Recept 列表,并且我希望 xml 显示“Namn”和“Ingredienser”列表。
这是我的序列化器
class XMLSerial
{
public static bool Serialize<T>(T obj, string filePath)
{
bool bok = true;
XmlSerializer serializer = new XmlSerializer(typeof(T));
TextWriter writer = new StreamWriter(filePath);
try
{
serializer.Serialize(writer, obj);
}
catch
{
bok = false;
}
finally
{
if (writer != null)
writer.Close();
}
return bok;
}
}
这是在我将对象传递给序列化程序的 ListHanterare 类中
public bool XMLSerialize(string filePath){
return XMLSerial.Serialize<List<T>>(lista, filePath);
编辑: 因此,通过向 ingredienser 添加一个设置器,我现在得到了这个
-<Recept>
<Ingredienser/>
<Namn>rec</Namn>
</Recept>
但是ingredienser 还是空的 我的 ListHanterare 类是一个基本的泛型 List 类
public class ListHanterare<T> : IListHanterare<T>
{
private List<T> lista; // This is the list
private int count;
public ListHanterare()
{
lista = new List<T>();
}
所以我需要序列化 Recept 对象的 ListHanterare 列表,其中 Recept 对象由一个字符串和另一个 ListHanterare 字符串列表组成,该字符串被正确序列化,但不是字符串列表。
【问题讨论】:
-
将 XML 元素添加到您的接收类,以便您的序列化程序知道要反序列化什么。此外,您没有反序列化您的元素,您只是在流式传输并将值返回为 TRUE - bool。你没有返回任何错误或真实的东西。
-
我的类声明上方有一个 [Serializable]
-
[Serializable]用于二进制格式而不是XmlSerializer。
标签: c# xml wpf serialization xml-serialization