C#XML序列化/反序列化

我是C#的新手。 我正在上课,我们的一个例子不会编译。 Visual Studio 2010给出了这个错误:XML文档中存在错误(3,2)。

我应该如何编辑XML文件以使其与代码一起使用?

谢谢您的帮助!

public class SerializeIn { public static void Main() { // Declarations. Person[] p = new Person[0]; string infile = "Persons.xml"; StreamReader sr = new StreamReader(infile); XmlSerializer xs = new XmlSerializer(p.GetType()); // Deserialize Person object from disc. p = (Person[])(xs.Deserialize(sr)); // Close StreamReader object to be safe. sr.Close(); // Write what happened. Console.WriteLine("Deserialized array p from output file " + infile + "."); // Print array. foreach(Person x in p) Console.WriteLine(x); Console.ReadLine(); } } 

使用系统; namespace XmlArraySerialize {/// /// XmlArraySerialize示例:序列化和反序列化/// Person的数组。 ///

 public class Person { public string name; public string gender; public int age; // Noarg constructor needed for compatibility public Person() { } public Person(string theName, string theGender, int theAge) { name = theName; gender = theGender; age = theAge; } public override string ToString() { return name + " " + gender + " " + age; } } 

}

和XML文件……

     Susan F 21   Michael M 25   Judy F 31   Chloe F 27   Scott M 58   William M 41   Mary F 30   

这应该工作)

 class Program { static void Main(string[] args) { const string infile = "x:\\Persons.xml"; Persons p; using (var sr = new StreamReader(infile)) { var xs = new XmlSerializer(p.GetType()); p = (Persons)(xs.Deserialize(sr)); } Console.WriteLine("Deserialized array p from output file " + infile + "."); // Print array. foreach (var x in p) Console.WriteLine(x); Console.ReadLine(); } } [XmlType(TypeName = "Persons")] public class Persons : IEnumerable { private List inner = new List(); public void Add(object o) { inner.Add((Person)o); } public IEnumerator GetEnumerator() { return inner.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } public class Person { [XmlAttribute] public int ID { get; set; } public string Name { get; set; } public string Gender { get; set; } public int Age { get; set; } } 

有关XmlType的 更多信息 , 有关XmlAttribute的更多信息

谢谢您的意见! 我已经解决了这个问题。 由于代码中没有main方法,因此我必须编辑属性,以便SerializeOut在SerializeIn之前工作。 我猜Persons XML文件只是一个模板……再次感谢!