我有点困境。我需要通过JSoup解析一大块HTML,然后将该块传递给另一个处理jsoup元素的类。不幸的是,当我将一个块传递给表示表的一部分的Jsoup时,由于一些奇怪的原因,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 Doc产生以下内容:
<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 :(得分:0)
使用 JSoup 1.7.1 测试 - &gt;同样的问题。
我想,唯一的方法是将你的片段包装成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,但也许你可以这样想:
public String doSomethingWithFragment(String html)
{
Document doc = Jsoup.parse("<table>" + html + "</table>");
Elements fragment = doc.select("tbody > *");
// Do something with 'fragment' here ...
}
在此示例中,fragment
包含您在上面发布的HTML,您可以使用它进行更多操作。
我知道这是一个非常奇怪的解决方法 - 添加内容并在下一步中将其删除。但是......它有效(我希望) :-) ...