

XMLのUsersノード内をforeachしてIdとKeyとAddressを読み込むようにしたいのですが、IdだけNullになってしまい読み込めません。  
どうしたらIdも読めるようにできるのかご教示いただけたらと思います  
Idが読めない以外は一応動いてるのですが、独学で悪戦苦闘しながら組んでるので、おかしな部分もあるかもしれません。  
ダメ出しやアドバイスをよろしくお願いいたします。

[code]

    <AppSettings>
      <FileFolder>C:\</FileFolder>
      <SKey>0</SKey>
      <Users>
        <User Id="User0001">
          <Key></Key>
          <Address>D:\C#作成物\顔マーク_フリー素材\img038.png</Address>
        </User>
        <User Id="User0002">
          <Key>２</Key>
          <Address />
        </User>
        <User Id="User0003">
          <Key>３</Key>
          <Address />
        </User>
      </Users>
    </AppSettings>
    
[/code]

[code]

    [Serializable()]
    public class AppSettings
    {
        public string FileFolder { get; set; }
        public byte SKey { get; set; }  // ラベルの配列番号
        // ユーザ情報
        public List<User> Users { get; set; }
        public class User
        {
            public string Id { get; set; } // ID
            public string Key { get; set; } // ユーザ名
            public string Address { get; set; } // ユーザ画像アドレス
        }
    
        //Settingsクラスのインスタンス
        [NonSerialized()]
        private static AppSettings _instance;
        [System.Xml.Serialization.XmlIgnore]
        public static AppSettings Instance
        {
            get
            {
                //_instanceがnullのときは、新しくインスタンスを作成する
                if (_instance == null)
                    _instance = new AppSettings();
    
                return _instance;
            }
            set { _instance = value; }
        }
    }
    
    private void MainForm_Load(object sender, EventArgs e)
    {
        //--中略--
        foreach (AppSettings.User userLabel in AppSettings.Instance.Users) //保存ユーザラベルの読込
        {
            if (userLabel.Key != "")
            { 
                UserList.Items.Add(userLabel.Key);
                if (UCount == KeyNum) UserName.Text = userLabel.Key; //保存されてるUserIdのKey
            }
            else
            {
                UserList.Items.Add(userLabel.Id);
                if (UCount == KeyNum)
                {
                    UserName.Text = userLabel.Id;
                    UserPicture.BackgroundImage = Image.FromFile(userLabel.Address); //保存されてるUserIdのAddress
                }
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2019-10-11T01:20:38.587
59628
2021-03-07T06:37:11.713
2019-10-11T09:01:09.157
3060
36166
question
c# xml
C# XMLのノードを読み込んだ時IdだけがNullになってしまう


この記事が参考になるのでは？ [C# 属性とテキストで構成されるXMLタグをデシリアライズする為のクラス設計](https://zero-
config.com/dotnet/xmlserializer001.html)

[code]

    public class User
    {
        [System.Xml.Serialization.XmlAttribute("Id")] // XMLエレメント(タグ)の属性(Attribute)を入れる
        public string Id { get; set; } // ID
        public string Key { get; set; } // ユーザ名
        public string Address { get; set; } // ユーザ画像アドレス
    }
    
[/code]

* * *

この投稿は @kunif
さんの[コメント](https://ja.stackoverflow.com/questions/59628/#comment64315_59628)などを元に編集し、[コミュニティWiki](https://ja.meta.stackoverflow.com/q/1583)として投稿しました。


CC BY-SA 4.0
2021-03-07T06:37:11.713
74485
2021-03-07T06:37:11.713
9820
59628
answer