Html Agility Pack(HAP)是一个用于解析HTML文档的.NET库,它提供了灵活且容错的解析方式。innerText
属性通常用于获取元素内的文本内容,但在HAP中,你需要使用不同的方法来获取类似的信息。
innerText
属性返回元素内所有文本节点的文本内容。但在HAP中,这个属性并不存在。使用HAP获取表格内容有以下优势:
以下是一个使用HAP获取HTML表格innerText
的示例代码:
using HtmlAgilityPack;
using System;
class Program
{
static void Main()
{
string html = @"
<table>
<tr><td>Row1 Cell1</td><td>Row1 Cell2</td></tr>
<tr><td>Row2 Cell1</td><td>Row2 Cell2</td></tr>
</table>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
// 使用XPath选择表格
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table");
if (table != null)
{
// 遍历表格中的所有行
foreach (HtmlNode row in table.SelectNodes(".//tr"))
{
// 遍历行中的所有单元格
foreach (HtmlNode cell in row.SelectNodes(".//td"))
{
// 获取并打印单元格的文本内容
Console.Write(cell.InnerText + "\t");
}
Console.WriteLine();
}
}
}
}
问题:获取到的文本内容包含多余的空格或换行符。
原因:HTML源码中的空白字符(如空格、制表符、换行符)在解析时可能被当作文本节点处理。
解决方法:使用Trim()
方法去除文本内容两侧的空白字符,或者在XPath查询中使用normalize-space()
函数来规范化文本。
string cleanedText = cell.InnerText.Trim();
// 或者在XPath中使用
HtmlNode cell = row.SelectSingleNode(".//td[normalize-space(.)]");
通过上述方法,你可以有效地使用Html Agility Pack来解析和处理HTML表格内容。
领取专属 10元无门槛券
手把手带您无忧上云