XPath / C# not returning what's expected

本文关键字:expected what not returning XPath | 更新日期: 2023-09-27 18:29:18

这是我试图解析的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);
}

这个前臂只打印一次,它就是整张桌子。我在谷歌上搜索过所有地方,XPath表达式应该是正确的。你能弄清楚问题出在哪里吗?

XPath / C# not returning what's expected

您的代码是正确的。若你们试图只解析一段给定的代码,程序会输出这个:

时间:2012年2月14日时间:16:25TD:Entregue时间:2012年2月13日时间:16:59TD:目的地;里约热内卢时间:2012年2月11日时间:14:09TD:Envio recolhido na origemTD:-TD:-TD:Pendente de entregaàMRW

我想这就是你想要的。问题出现在您的原始文档中。尝试在其他软件工具中打开文档,该工具将显示完整的DOM树,您会看到。有问题的是,您将不得不修改XPath表达式。