我试图通过使用jsoup解析HTML来从表中提取一些数据。
这是一个例子,
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。我只想按原样解析它。
答案 0 :(得分:1)
也许使用XML解析器而不是使用HTML解析器(显然不完全支持这种嵌套表)。试试
Document doc = Jsoup.parse(tableHtml,"",Parser.xmlParser());
Element table = doc.select("table").first();
Element r = table.select("tfoot").first();
System.out.println("->" + r.text());