【发布时间】:2012-03-29 10:42:54
【问题描述】:
这是我要解析的 HTML。我想获取每个单独的 td 内部文本。
<tbody>
<tr class="past">
<!--<th><span class="place">Lugar</span></th>-->
<td class="date">14/02/2012</td>
<td class="hour">16:25</td>
<td class="status">Entregue</td>
</tr>
<tr class="past">
<!--<th><span class="place">Lugar</span></th>-->
<td class="date">13/02/2012</td>
<td class="hour">16:59</td>
<td class="status">Destinatário ausente ou fechado</td>
</tr>
<tr class="past">
<!--<th><span class="place">Lugar</span></th>-->
<td class="date">11/02/2012</td>
<td class="hour">14:09</td>
<td class="status">Envio recolhido na origem</td>
</tr>
<tr class="past">
<!--<th><span class="place">Lugar</span></th>-->
<td class="date">-</td>
<td class="hour">-</td>
<td class="status">Pendente de entrega à MRW</td>
</tr>
</tbody>
我正在使用这段代码来运行这张桌子上的每个 td:
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//tbody/tr/td"))
{
Console.WriteLine("TD: " + link.InnerText);
}
这个 foreach 只打印一次,它是整个表。我在 Google 上到处搜索,XPath 表达式应该是正确的。你能找出问题所在吗?
【问题讨论】:
-
您在哪里找到了那些 HtmlNode 和 DocumentNode 类?我在 MSDN 中找不到它们。 ¿ 为什么不使用 XmlNode?span>
-
它来自codeplex上的HtmlAgilityPack,我以前用它来解析Html,它被认为是最好的:\ 只是这次,我不知道出了什么问题。我将尝试使用 XmlNode。
-
您的 XPath 是正确的。你应该检查 HtmlAgilityPack 文档,看看 SelectNodes 到底是做什么的。顺便说一句,任何 XML 库,包括 .NET 库都不能容忍格式错误的文档。这可能会造成一些麻烦。根据文档 HtmlAgilityPack 可以容忍格式错误的文档。因此,根据您的 HTML 文档的来源,您应该坚持使用 HtmlAgilityPack。
-
"这个项目还没有文档。"我将检查 Visual Studio 上的方法建议工具提示。 XmlNode 是否也适用于 Html 文件或仅适用于 Xml 文件?
-
html 文件有点像 xml 文件
标签: c# xpath html-agility-pack