2012-10-02 57 views
2

我有點困惑。我需要通過JSoup解析一大塊HTML,然後將該塊傳遞給另一個處理jsoup元素的類。不幸的是,當我將一個塊傳遞給表示表的一部分的Jsoup時,由於某種奇怪的原因,jsoup只是拋出所有的html,並且沒有提供任何內容,而是文本。這裏有一個例子:Jsoup身體片段拋出HTML標記

<tr> 
    <td>Declared</td> 
    <td>Other Supported Languages</td> 
    <td>/ATP_ETK_89078_1006/atp_etk_89078_1006_p4/nonshared/E-trak_API_Build/obfuscated/vna.dll</td> 
    <td align="right">1519616</td> 
    <td align="right"></td> 
    <td align="right"></td> 
    <td>COM DEV</td> 
    <td>Unspecified</td> 
    <td>License for COM DEV</td> 
    <td>Component (Dynamic Library)</td> 
    <td>100%</td> 
    <td style="text-align: center;"></td> 
    <td></td> 
    <td></td> 
    <td valign="top"></td> 
</tr> 
<tr> 
    <td>Declared</td> 
    <td>Other Supported Languages</td> 
    <td>/ATP_ETK_89078_1006/atp_etk_89078_1006_p4/nonshared/E-trak_API_Build/obfuscated/vna.dll</td> 
    <td align="right">1519616</td> 
    <td align="right"></td> 
    <td align="right"></td> 
    <td>COM DEV</td> 
    <td>Unspecified</td> 
    <td>License for COM DEV</td> 
    <td>Component (Dynamic Library)</td> 
    <td>100%</td> 
    <td style="text-align: center;"></td> 
    <td></td> 
    <td></td> 
    <td valign="top"></td> 
</tr> 

這是片段,你可以看到它只是代表從表中兩行。

然而Jsoup文件生成以下:

<html> 
    <head></head> 
    <body> 
    Declared Other Supported Languages /ATP_ETK_89078_1006/atp_etk_89078_1006_p4/nonshared/E-trak_API_Build/obfuscated/vna.dll 1519616 COM DEV Unspecified License for COM DEV Component (Dynamic Library) 100%  
    Declared Other Supported Languages /ATP_ETK_89078_1006/atp_etk_89078_1006_p4/nonshared/E-trak_API_Build/obfuscated/vna.dll 1519616 COM DEV Unspecified License for COM DEV Component (Dynamic Library) 100%   
    </body> 
</html> 

現在,如果表中的原頭在那裏,包括表似乎工作打開/關閉頭,但違背了這個片段的全部目的因爲HTML文檔的解析可能會非常龐大​​。

任何幫助將不勝感激。

回答

0

測試JSoup 1.7.1 - >同樣的問題。

我想,唯一的辦法是把你的片段包裝成table-標籤。

String html = ... // your html 
Document doc = Jsoup.parse(html); 
// doesn't work as you said 


String html = ... // your html 
Document doc = Jsoup.parse("<table>" + html + "</table>"); 
// works 

不知道你如何在你的情況下使用Jsoup,但也許你可以做somethink這樣的:

public String doSomethingWithFragment(String html) 
{ 
    Document doc = Jsoup.parse("<table>" + html + "</table>"); 
    Elements fragment = doc.select("tbody > *"); 

    // Do something with 'fragment' here ... 
} 

在這個例子中fragment包含完全按照你上面貼,您可以在HTML用它做更多的事情。

我知道它是一個真正奇怪的解決方法 - 添加東西並在下一步中刪除它。但是,但是...它工作(我希望) :-) ...