C# 查找 标记之间的所有内容,并将其排序为字符串
本文关键字:TR 字符串 排序 查找 之间 | 更新日期: 2023-09-27 18:32:55
我正在制作一个程序,它将网站上的大表格分类为更易于管理和可定制的显示。
类表示内容是什么 tt=文本 nn=数字。下面是其中一个标签的外观示例。除了标签之间的值外,它们都完全相同。
<TR class=r2>
<TD class=tt headers=0>SOME_Text_here_ending_in_Vi.SG2</TD>
<TD class=nn headers=1>0</TD>
<TD class=nn headers=2>0</TD>
<TD class=nn headers=3>0</TD>
<TD class=nn headers=4>0</TD>
<TD class=nn style="COLOR: ; BACKGROUND-COLOR: #00cc00"
headers=5>00:00:00</TD>
<TD class=nn style="COLOR: ; BACKGROUND-COLOR: #00cc00"
headers=6>00:00:00</TD>
<TD class=nn headers=7>7</TD>
<TD class=nn headers=8>13</TD>
</TR>
页面上有~300个。通过使用 RegEx (?-imsx:" + system + "_*(.?)*_Vi)
,我设法获得了每个<TR>
的第一个<TD>
- 系统是我对它们进行排序的。但是,我仍然需要来自<TR>
标签的其余信息,因为它与搜索有关。
我的目标是在 ListBox 中创建一个较小的表,该表根据我在"系统"变量中提交的内容显示排序结果。
扫描页面的整个源 HTML 并将其分开的最佳方法是什么 标签 按我的意愿对它们进行排序。从我到目前为止在这里发现的情况来看,正则表达式似乎不能像我想要的那样用于解析 HTML,那么我还有什么其他方法可以实现呢?
HtmlAgilityPack 是一个完美的工具。将 HTML 放在字符串中,您可以像这样加载它:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
然后你有像XPath这样强大的东西来帮助你完成任务。
因此,假设您想将所有 TR 都放入您的文档中,然后您想对他们的 TD 子项执行一些操作:
HtmlNode docNode = doc.DocumentNode;
HtmlNodeCollection trNodes = docNode.SelectNodes("//tr");
foreach (HtmlNode trNode in trNodes)
{
HtmlNodeCollection tdNodes = trNode.SelectNodes("td");
// Here you have TD elements in a collection and you can process it
}
你也可以使用 Linq to Xml。没有测试过,但它应该是这样的:
XDocument xdoc = XDocument.Parse(htmlCode);
var tds = xdoc.Root.Descendants().Where(el => el.Name == "TD");
// tds is a collection of all TD elements of the htmlCode