【问题标题】:How to load a property of an XML-file如何加载 XML 文件的属性
【发布时间】:2020-03-09 03:57:23
【问题描述】:

我想加载一个 XML 文件的highscore 并在一个标签中花费第一名。我如何设法读取第一个条目并花费其价值?

public class Highscore_obj
{
    public string Name { get; set; }
    public int Score { get; set; }
}


class Highscore
{
    public Highscore_obj[] Score_array = new Highscore_obj[4];

    public void LoadXmL(string path)
    {
        XmlDocument XML = new XmlDocument();
        using (Stream s = File.OpenRead(path))
        {
            XML.Load(s);
        }

        Score_array[0].Name = "Alex";
        Score_array[0].Score = 1000;

        Score_array[1].Name = "Chris";
        Score_array[1].Score = 940;

        Score_array[2].Name = "Stefan";
        Score_array[2].Score = 700;

        XmlNodeList Highscores = XML.ChildNodes;

    }

当我开始游戏时,Alex 的Highscore 必须在标签中可见。

【问题讨论】:

    标签: c# xml winforms


    【解决方案1】:

    我宁愿建议使用列表而不是数组。然后您可以使用 Linq 查询您的列表并按分数降序排序。我也宁愿使用序列化和反序列化来加载和存储您的 List 到 XML 和从 XML 存储。

    下面的代码说明了这一点,应该让你走上正轨。

        internal List<Highscore> Highscores { get; set; }
    
        public void LoadXmL(string path)
        {
            List<Highscore> highscores = null;
    
            XmlSerializer ser = new XmlSerializer(typeof(List<Highscore>));
    
            using (XmlReader reader = XmlReader.Create(path))
            {
                highscores = (List<Highscore>)ser.Deserialize(reader);
            }
    
            if (highscores == null)
            {
                highscores = new List<Highscore>
                {
                    new Highscore{ Name = "Alex", Score = 1000 },
                    new Highscore{ Name = "Chris", Score = 940 },
                    new Highscore{ Name = "Stefan", Score = 700 },
                };
            }
    
        }
    
        public class Highscore
        {
            public string Name { get; set; }
            public int Score { get; set; }
        }
    
        public Highscore GetHighest()
        {
            return Highscores.OrderByDescending(o => o.Score).First();
        }
    

    【讨论】:

      猜你喜欢
      • 2011-06-20
      • 2023-04-05
      • 2011-06-03
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多