反序列化的XML对象在C#中的列表
问题描述:
我有下面的XML,我无法改变:反序列化的XML对象在C#中的列表
<myRoot>
<User>
<Name>James</Name>
</User>
<User>
<Name>Jill</Name>
</User>
</myRoot
我创建了一个类来表示此xml:当我反序列化的XML
[XmlRoot("myRoot")]
public class Users
{
[XmlElement("User")]
List<User> UserList {get;set;}
}
public class User
{
[XmlElement("Name")]
string FirstName {get;set;}
}
我确实在数组中获得了适量的记录。但FirstName始终为空或为空。
请帮忙。
答
您需要为public
设置两个属性:
[XmlRoot("myRoot")]
public class Users {
[XmlElement("User")]
public List<User> UserList {get;set;}
}
public class User {
[XmlElement("Name")]
public string FirstName {get;set;}
}
一种更简便的是摆脱你Users
类,它似乎只是一个容器的用户列表。你可以只定义User
类:
public class User {
[XmlElement("Name")]
public string FirstName { get; set; }
}
和反序列化List<User>
如下:
XmlSerializer ser = new XmlSerializer(typeof(List<User>),
new XmlRootAttribute("myRoot"));
using (var str = System.IO.File.OpenRead(@"path\to\file")) {
List<User> u = (List<User>)ser.Deserialize(str);
}
答
尝试:
添加[Serializable接口]你的用户和用户类。
制作名字和用户列表是公共
+0
'Serializable'与它无关。 – 2013-05-02 03:22:10
+0
让我的班上班。在我发布这个问题之后,我注意到了......但无论如何都要感谢。 – Arcadian 2013-05-02 13:43:48
加上'[XmlElement的(类型= typeof运算(用户)的ElementName = “用户”)]' – PSL 2013-05-02 03:25:01
制作可序列化的成员公开 – Mahantesh 2013-05-02 03:52:33