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; }
}

次のように a をデシリアライズ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);
}
于 2013-05-02T03:51:19.493 に答える
0

試す:

[Serializable]を Users および User クラスに追加します。

FirstName と UserList を公開する

于 2013-05-02T03:19:04.497 に答える