[英]C# Serialization of a List XML
我在序列化對象列表(在我的情況下,類類型為User的列表)時遇到問題。
[Serializable()]
public class User
{
string Fname { get; set; }
string Lname { get; set; }
string Address { get; set; }
string City { get; set; }
string State { get; set; }
int Zip { get; set; }
string Phone { get; set; }
string Email { get; set; }
public User(string f, string l, string a, string c, string s, int z, string p, string e)
{
Fname = f;
Lname = l;
Address = a;
City = c;
State = s;
Zip = z;
Phone = p;
Email = e;
}
public User() { }
}
我試圖用來將列表序列化為XML文件的代碼僅生成具有Class(User)名稱的XML文件,而沒有其他內容。
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string fullpath = System.IO.Path.Combine(path, "Users.txt");
Stream stream = File.OpenWrite(fullpath);
XmlSerializer writer = new XmlSerializer(typeof(List<User>));
writer.Serialize(stream, Users);
}
我到底在做什么錯。 只是要清楚,這是為了家庭作業。 我不知該如何更改以將數據存儲到文件中。 謝謝。
嘗試這個
[Serializable()]
public class User
{
public string Fname { get; set; }
public string Lname { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public int Zip { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public User(string f, string l, string a, string c, string s, int z, string p, string e)
{
Fname = f;
Lname = l;
Address = a;
City = c;
State = s;
Zip = z;
Phone = p;
Email = e;
}
public User() { }
}
為了能夠序列化/反序列化一個類,序列化器需要一個無參數的構造函數。 因此,您只需將無參數構造函數添加到您的類中
public class User
{
public string Fname { get; set; }
public string Lname { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public int Zip { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
// parameterless constructor. There is no need to declare it.
public User() { }
static void Main(string[] args)
{
User n = new User();
n.Fname = "fname";
n.Lname = "lname";
n.Address = "address";
n.City = "city";
n.State = "state";
n.Zip = 1;
n.Phone = "phone";
n.Email = "email";
SaveXML.SaveData(n, "xml.xml");
}
class SaveXML
{
public static void SaveData(object obj, string filename)
{
// initialization of XML serializer.
XmlSerializer sr = new XmlSerializer(obj.GetType());
// get stream from string
TextWriter writer = new StreamWriter(filename);
// Serialization
sr.Serialize(writer, obj);
writer.Close();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.