XPath / C#没有返回预期的内容

时间:2012-03-29 10:42:54

标签: c# xpath html-agility-pack

这是我正在尝试解析的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只打印一次,它就是整个表格。我在谷歌的各个地方搜索过,XPath表达式应该是正确的。你能弄明白问题是什么吗?

1 个答案:

答案 0 :(得分:0)

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

TD: 14/02/2012
TD: 16:25
TD: Entregue
TD: 13/02/2012
TD: 16:59
TD: Destinatário ausente ou fechado
TD: 11/02/2012
TD: 14:09
TD: Envio recolhido na origem
TD: -
TD: -
TD: Pendente de entrega à MRW

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