2012-02-15 97 views
0

任何人都可以请建议一个类似于Perl模块HTML::TableExtract的Java库。这个模块提到的特点之一是它可以帮助用户通过使用深度和数量来轻松识别嵌套表格。我使用了一些库,如JSoup,HTML解析器和HTML单元。但直到现在,我还没有接近HTML :: TableExtract模块。所以任何人都可以在这里请建议我一些相当于Java的这个模块,如果有的话?因为我试图做的是搜索每个表中的关键字,如果它存在,我将提取表。在嵌套表格的情况下,我想只提取作为关键字不是父表格的表格。在此先感谢用于HTML的Java等价物:: TableExtract

@卢卡斯Rżanek请考虑下面的HTML代码

<html> 
<table border=3 cellpadding=10> 
<tr> 
    <td valign=top> 
    Content 1 
    </td><td> 
    Content 2<p> 

    <table border=1> 
    <tr> 
     <td>Content 3</td> 
     <td>Content 4</td> 
    </tr><tr> 
     <td>Content 5</td> 
     <td>Content 6</td> 
    </tr> 
    </table><p> 

    Content 7 
    </td> 
</tr> 
</table> 
</html> 

在这里,我想只提取其中包含的内容3.我如何能做到用JSoup表?

+1

JSoup选择器和/或DOM导航有什么问题?这是几行代码! – 2012-02-15 10:30:51

+0

我只使用JSoup。但是,我所面临的问题是,如果出现在嵌套表(子表)的关键字,然后我不能能够提取子表。我对JSoup非常陌生,所以我可能不会使用正确的方法。所以,如果你有这样做的任何其他方法吧,请让我知道。 – Allwyn 2012-02-15 11:24:48

+0

你认罪能否提供HTML代码什么的 - 我真的不明白的问题,因为在JSoup evrything似乎是那么容易的,现在...... – 2012-02-15 15:02:28

回答

1

您可能需要添加一些额外的逻辑。

检查&让我知道如果这是你想要的?

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) throws IOException { 
    // TODO code application logic here 
    Document doc = Jsoup.parse(new File("**//HTML File Path//**"), "utf-8"); 
    Elements elements = doc.getElementsContainingOwnText("**//Text to Search//**"); 
    for(Element element : elements) { 
     Element table = getImmediateParentTable(element); 
     System.out.println(table.outerHtml()); 
    } 
} 

public static Element getImmediateParentTable(Element element) { 
    while(element.tagName().equals("table")) { 
     return element; 
    } 
    return getImmediateParentTable(element.parent()); 
} 
+0

谢谢你..让我检查 – Allwyn 2012-02-16 09:23:02