2012-03-29 17 views
0

これは解析しようとしているHTMLです。私は各個人の内面テキストを取得したい。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&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> 

私は、このテーブルの上にthroughtすべてのTDを実行するためのコードのこの部分を使用しています:

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//tbody/tr/td")) 
{ 
    Console.WriteLine("TD: " + link.InnerText); 
} 

このforeachのは一度だけ出力し、それが全体のテーブルです。私はどこでもGoogleで検索しており、XPath式は正しいはずです。あなたは問題が何であるか把握できますか?

+0

これらのHtmlNodeクラスとDocumentNodeクラスはどこで見つかりましたか?私はMSDNでそれらを見つけることができません。 XmlNodeを使ってみませんか? – JotaBe

+0

これはHtmlAgilityPackのコードplexから来たもので、以前はHtmlの解析に使用していましたが、これは最高のものと考えられています:これはちょうど今度のことです。何が間違っているのか分かりません。私はXmlNodeで試してみます。 –

+0

XPathが正しいです。 HtmlAgilityPackのドキュメントをチェックし、SelectNodesが何を正確に行うかを確認する必要があります。ところで、.NETライブラリを含むあらゆるXMLライブラリは、不正な形式のドキュメントには耐性がありません。これは何らかの問題を引き起こします。ドキュメントによると、HtmlAgilityPackは不正な形式のドキュメントには寛容です。だから、あなたのHTMLドキュメントの起源に応じて、HtmlAgilityPackを使うべきです。 – JotaBe

答えて

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式を変更する必要があります。

関連する問題