DungeonMasterParser.DungeonData.ParseCreatureDatas C# (CSharp) Method

ParseCreatureDatas() public method

public ParseCreatureDatas ( ) : IList
return IList
        public IList<CreatureDescriptor> ParseCreatureDatas()
        {
            HtmlDocument d = new HtmlDocument();
            d.LoadHtml(File.ReadAllText("Data/creatures.html"));

            var data = d.DocumentNode.SelectSingleNode("//table")
                .Descendants("tr")
                .Where(tr => tr.Elements("td").Count() > 1)
                .Select(tr => tr.Elements("td").Skip(0).Select(td => td.InnerText.Trim()).ToList())
                .ToArray();

            var names = d.DocumentNode.SelectSingleNode("//table")
                .Descendants("tr")
                .First()
                .Elements("th")
                .Skip(1)
                .Select(x => x.InnerText)
                .ToArray();

            return names.Select((x, i) =>
            {
                var res = new CreatureDescriptor(x);

                foreach (var row in data)
                {
                    res.GetType().GetProperty(CreatureDescriptor.ConvertToPopertyName(row[0]))
                        .SetValue(res, int.Parse(row[i + 1]));
                }
                return res;
            }).ToArray();
        }