簡體   English   中英

在C#中從XML反序列化對象列表

[英]Deserializing a list of objects from XML in C#

我有以下無法更改的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。

請幫忙。

您需要將兩個屬性都設置為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);
}

嘗試:

[可序列化]添加到您的Users和User類。

將FirstName和UserList設為公開

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM