C# 获取HTML表数据

C# 获取HTML表数据,c#,.net,html,C#,.net,Html,我有一个HTML表(我没有创建它,但我正在使用它,只是为了澄清这一点),有很多行和一些列 我想将一些数据转换成字符串,用作工具提示。我现在的做法是将HTML文件的内容作为字符串读取,并使用字符串操作来获取所需的数据 这可能是一个非常糟糕的主意,所以我想知道是否有任何API可以用来读取HTML文件中特定行和列的文本(如第2行第2列)。我不希望使用外部.dll库文件,但如果没有其他方法,我将不得不使用它 有什么想法吗? 这里有一些关于如何使用HTML敏捷包的好例子 请参阅中的rtpHarry发布的链

我有一个HTML表(我没有创建它,但我正在使用它,只是为了澄清这一点),有很多行和一些列

我想将一些数据转换成字符串,用作工具提示。我现在的做法是将HTML文件的内容作为字符串读取,并使用字符串操作来获取所需的数据

这可能是一个非常糟糕的主意,所以我想知道是否有任何API可以用来读取HTML文件中特定行和列的文本(如第2行第2列)。我不希望使用外部.dll库文件,但如果没有其他方法,我将不得不使用它

有什么想法吗?

这里有一些关于如何使用HTML敏捷包的好例子

请参阅中的
rtpHarry
发布的链接

as中的一个示例介绍了如何使用HTML agility pack修复HTML文件中的所有HREF:

 HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
 }
 doc.Save("file.htm");

事实上,我认为你采取的方法是个好主意

我可能就是这么做的。可能会有图书馆来做这件事,但他们只是在做同样的事情

最好从源代码获取数据,而不是从HTML页面解析数据。但如果你只有这些,那就是你需要做的


为什么您认为这是个坏主意?

其中一种方法是使用库,例如加载html文档,然后使用DOM api或xpath导航到所需的节点并获取内容。 这可能会让您开始使用agility pack:


最后,如果您的html是xhtml(或有效的xml格式),那么您可以使用.NET本身提供的xml库来进行操作。

jonathon,我认为这是一个坏主意,因为由于格式不正确/意外字符等,必须进行一堆又一堆的异常测试。对库的单行引用(比如agility pack)有很长的路要走。另外,在网上有很多关于agility pack复杂用法的例子。顺便说一句,我最近不得不从一个旅游网站上为一个客户“窃取”一些住宿细节(我不会详细说明-但该客户是该业务的前合作伙伴。我只是信使:-)。。。cont->这涉及到查询分页数据,深入到每个条目的细节,获取核心数据,然后对分页数据的每个页面重复。如果没有agility pack,我就必须确定各种场景中的不一致性,而所需的只是对所需结构的坚定想法。吉姆:我最近好像写了很多HTML解析代码。如果它做得很好,就不会有大量的异常测试。无论如何,无论您是使用其他人的工具还是自己编写,任何必要的测试都是必要的。如果我自己写的话,它的重量会轻得多,而且完全符合我的要求。