0
這是我試圖解析的HTML。我想要獲取每個單獨的td內部文本。XPath/C#沒有返回預期的結果
<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>
我使用這段代碼對這個表運行throught每個TD:
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//tbody/tr/td"))
{
Console.WriteLine("TD: " + link.InnerText);
}
這僅僅的foreach打印一次,它的整個表。我在Google上到處搜索,XPath表達式應該是正確的。你能弄清楚問題是什麼?
你從哪裏找到這些HtmlNode和DocumentNode類?我無法在MSDN中找到它們。 ¿爲什麼不使用XmlNode? – JotaBe 2012-03-29 10:49:50
它來自Codeplex上的HtmlAgilityPack,我之前用它來解析Html,它被認爲是最好的:\它只是這次,我無法弄清楚什麼是錯的。我會嘗試使用XmlNode。 – 2012-03-29 10:52:02
您的XPath是正確的。你應該檢查HtmlAgilityPack文檔,看看SelectNodes到底是什麼。順便說一下,任何XML庫(包括.NET庫)都不能容忍格式錯誤的文檔。這可能會造成一些麻煩。根據文檔HtmlAgilityPack是容忍格式不正確的文件。所以,根據HTML文檔的來源,您應該堅持使用HtmlAgilityPack。 – JotaBe 2012-03-29 10:58:33