我有一个代码
[XmlRoot("user_list")]
public class UserList
{
public UserList() { Items = new List<User>(); }
[XmlAttribute("user")]
public List<User> Items{get; set; }
}
[XmlType("user")]
public class User
{
[XmlAttribute("id")]
public string Id{get; set; }
[XmlAttribute("name")]
public string Name{get; set; }
}
class Program
{
static void Main(string[] args)
{
Program o = new Program();
o.Deser();
List<User> p = new List<User>();
foreach (User c in p)
{
Console.WriteLine(c.Id);
Console.WriteLine(c.Name);
}
Console.ReadKey();
}
public void Deser()
{
List<User> users;
using (var reader = new StreamReader("fileXML.xml"))
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<User>),
new XmlRootAttribute("user_list"));
users = (List<User>)deserializer.Deserialize(reader)
}
}
}
并且VS中没有输出也没有错误。我做错了什么?以及如何在调试模式下查看列表包含哪些内容? 我认为可能是反序列化的一些问题,但不知道是什么。
不要怪我(
BTW测试xml是
<?xml version="1.0"?>
<user_list>
<user>
<id>1</id>
<name>Joe</name>
</user>
<user>
<id>2</id>
<name>John</name>
</user>
</user_list>
答案 0 :(得分:0)
更改方法的签名:
public static IEnumerable<User> Deser()
{ /* all your code */
return users; }
更改您的主要内容:
static void Main()
{
var users = Deser();
/* your foreach */
}
答案 1 :(得分:0)
试试这个:
[XmlRoot("user_list")]
public class UserList
{
public UserList() { }
[XmlAttribute("user")]
public List<User> Items { get; set; }
}
[XmlType("user")]
public class User
{
// [XmlAttribute("id")]
public string id { get; set; }
// [XmlAttribute("name")]
public string name { get; set; }
}