【问题标题】:XPath / C# not returning what's expectedXPath / C# 没有返回预期的结果
【发布时间】: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&aacute;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 &agrave; 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


【解决方案1】:

您的代码是正确的。如果您尝试只解析给定的一段代码,程序将输出:

TD:2012 年 2 月 14 日 时间:16:25 TD:Entregue TD: 13/02/2012 时间:16:59 TD: Destinatário ausente ou fechado TD:2012 年 11 月 2 日 时间:14:09 TD: Envio recolhido na origem 运输署:- 运输署:- TD: Pendente de entrega à MRW

我想这就是你想要的。问题出在您的原始文档中。尝试在其他一些软件工具中打开文档,它会显示完整的 DOM 树,你会看到。您可能必须修改您的 XPath 表达式。

【讨论】:

    猜你喜欢
    • 2016-06-28
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多