public static string[] GetPropertyNames(HtmlDocument d)
 {
     return(d.DocumentNode.SelectSingleNode("//table")
            .Descendants("tr")
            .First()
            .Elements("th")
            .Select(th => CreatureDescriptor.ConvertToPopertyName(th.InnerText))
            .ToArray());
 }
Ejemplo n.º 2
0
        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();
        }