0

我有以下无法更改的 XML:

<myRoot>
    <User>
        <Name>James</Name>
    </User>
    <User>
        <Name>Jill</Name>
    </User>
</myRoot

我创建了一个类来表示这个 xml:

[XmlRoot("myRoot")]
public class Users
{
  [XmlElement("User")]
  List<User> UserList {get;set;}
}

public class User 
{
   [XmlElement("Name")]
   string FirstName {get;set;}
}

当我反序列化 xml 时,我确实在数组中获得了正确数量的记录。但 FirstName 始终为空白或 null。

请帮忙。

4

2 回答 2

1

您需要将这两个属性设置为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; }
}

并反序列化 aList<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);
}
于 2013-05-02T03:51:19.493 回答
0

尝试:

[Serializable]添加到您的用户和用户类。

公开FirstName 和 UserList

于 2013-05-02T03:19:04.497 回答