Dies ist der HTML-Code, den ich analysieren möchte. Ich möchte jeden einzelnen td inneren Text bekommen.XPath/C# gibt nicht zurück, was erwartet wird
<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>
Ich verwende dieses Stück Code jedes td auf dieser Tabelle zu laufen Throught:
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//tbody/tr/td"))
{
Console.WriteLine("TD: " + link.InnerText);
}
Diese foreach druckt nur einmal und es ist die gesamte Tabelle. Ich habe überall auf Google gesucht und der XPath-Ausdruck sollte stimmen. Können Sie herausfinden, was das Problem ist?
Wo haben Sie diese HtmlNode- und DocumentNode-Klassen gefunden? Ich kann sie nicht in MSDN finden. Warum benutzt du XmlNode nicht? – JotaBe
Es ist von der HtmlAgilityPack auf Codeplex, ich habe es zuvor für die Analyse von HTML verwendet und es gilt als die beste: \ Es ist nur dieses Mal, ich kann nicht herausfinden, was los ist. Ich werde es mit XmlNode versuchen. –
Ihr XPath ist korrekt. Sie sollten die HtmlAgilityPack-Dokumente überprüfen und sehen, was genau SelectNodes macht. Übrigens sind alle XML-Bibliotheken, einschließlich .NET-Bibliotheken, nicht tolerant gegenüber fehlerhaften Dokumenten. Dies kann zu Problemen führen. Laut Dokumentation ist HtmlAgilityPack tolerant gegenüber ungültigen Dokumenten. Abhängig von der Herkunft Ihrer HTML-Dokumente sollten Sie also HtmlAgilityPack verwenden. – JotaBe