2014-02-27 34 views
0

我試圖通過使用jsoup解析HTML從表中提取一些數據。使用JSOUP解析表中的表

下面是一個例子,

String tableHtml = 
    "<table> 
      <thead> 
       <tr><th> 
        <table> 
         <tr><td>asdf</td></tr> 
        </table> 
        <table> 
          <tr><td>asdf</td></tr> 
        </table> 
       </th></tr> 
      </thead> 
      <tfoot> 
       <tr><td> 
        THE TEXT I WANT TO GET 
       </td></tr> 
      </tfoot> 
    </table>"; 

Document doc = Jsoup.parseBodyFragment(tableHtml); 
Element table = doc.select("table").first(); 
Element r = table.select("tfoot").first(); // I get NULL here/// WHY??? 
System.out.println("-----------" + r.text()); 

我得到空指針異常!

但是,如果我刪除內表中的一個,我沒有得到一個例外,它的工作原理。另外,如果我將標籤<th>更改爲<td>,它可以工作。奇怪的行爲。 這只是我試圖分析的一個真正的html的例子。 如果有人能指出我爲什麼會得到這個例外,我將不勝感激。謝謝。

注意。請假定我無法修改HTML。我只是想解析它。

回答

1

也許不使用HTML解析器(顯然不完全支持這種嵌套表)使用XML解析器。試用

Document doc = Jsoup.parse(tableHtml,"",Parser.xmlParser()); 
Element table = doc.select("table").first(); 
Element r = table.select("tfoot").first(); 
System.out.println("->" + r.text());