Java 使用JSOUP分析表中的表

Java 使用JSOUP分析表中的表,java,html,jsoup,Java,Html,Jsoup,我试图通过使用jsoup解析HTML来从表中提取一些数据 举个例子, String tableHtml = "<table> <thead> <tr><th> <table> <tr><td>asdf</td></tr>

我试图通过使用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());
String表html=
"
asdf
asdf
我想要的文本
";
Document doc=Jsoup.parseBodyFragment(tableHtml);
元素表=文件选择(“表”).first();
元素r=table.select(“tfoot”).first();//我在这里得到空值///为什么???
System.out.println(“------------”+r.text());
我得到空指针异常

然而,如果我删除其中一个内部表,我不会得到异常,它会工作。另外,如果我将标签
更改为
,它也可以工作。奇怪的行为。 这只是我试图解析的真实html的一个示例。 如果有人能指出我为什么会得到这个例外,我将不胜感激。多谢各位


注意。请假设我不能修改HTML。我只想按原样解析它。

也许不使用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());