首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C#读取超文本标记语言表格

用C#读取超文本标记语言表格
EN

Stack Overflow用户
提问于 2018-12-06 22:15:41
回答 2查看 4.1K关注 0票数 1

我想在C#中阅读this table的信息(它总是相同的风格)。这是一个替换老师的计划,我想把这个计划整合到我的学校时间表中。

EN

回答 2

Stack Overflow用户

发布于 2018-12-06 22:23:29

您可以使用像HtmlAgilityPack这样的第三方库来将数据解析为可以使用Linq进行查询的数据

从这篇StackOverflow文章开始,下面的内容就变得简单了

代码语言:javascript
复制
tmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
var headers = doc.DocumentNode.SelectNodes("//tr/th");
DataTable table = new DataTable();
foreach (HtmlNode header in headers)
    table.Columns.Add(header.InnerText); // create columns from th
// select rows with td elements 
foreach (var row in doc.DocumentNode.SelectNodes("//tr[td]")) 
    table.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());

您可以为特定表创建自定义类,并检查表td/或header的属性,以了解什么映射到哪里,以及

e.g

代码语言:javascript
复制
var myTableClass = new TableClass();
myTbaleClass.Name = row[0]; 
.....

这会让你的事情变得更简单。

票数 3
EN

Stack Overflow用户

发布于 2018-12-07 22:09:22

好吧。我找到了最好的解决方案:

代码语言:javascript
复制
var web = new HtmlWeb();
        var doc = web.Load(url);
        foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table"))
        {   
            foreach (HtmlNode row in table.SelectNodes("tr"))
            {
                temprow = new List<string>();
                foreach (HtmlNode cell in row.SelectNodes("td"))
                {
                    temprow.Add(cell.InnerText);
                }
                rows.Add(temprow);
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53653365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档