首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jsoup片段丢弃HTML标记

Jsoup片段丢弃HTML标记
EN

Stack Overflow用户
提问于 2012-10-02 15:48:12
回答 1查看 1.3K关注 0票数 2

我有点进退两难。我需要通过JSoup解析一个HTML块,这个块后来被传递给另一个处理jsoup元素的类。不幸的是,当我将一个块传递给表示表一部分的Jsoup时,出于某种奇怪的原因,jsoup只是抛出了所有的html,只给了我文本。下面是一个示例:

代码语言:javascript
复制
<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产生了以下内容:

代码语言:javascript
复制
<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文档可能会变得相当庞大。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-10-03 11:21:20

JSoup 1.7.1测试->相同的问题。

我想,唯一的方法是将您的片段包装到一个table-tag中。

代码语言:javascript
复制
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

我不知道在你的情况下你是如何使用J汤的,但也许你可以这样想:

代码语言:javascript
复制
public String doSomethingWithFragment(String html)
{
    Document doc = Jsoup.parse("<table>" + html + "</table>");
    Elements fragment = doc.select("tbody > *");

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

在这个例子中,fragment就像上面发布的一样包含了HTML,您可以用它做进一步的事情。

我知道这是一个非常奇怪的解决办法--添加一些东西,并在下一步删除它。但是无论如何..。有用(我希望) :-) .

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12693739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档