2012-02-15 80 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