【问题标题】:Remove redundant space in HTML in JAVA在 JAVA 中删除 HTML 中的多余空间
【发布时间】:2015-01-07 10:22:32
【问题描述】:

需要执行一些 HTML 清理。

拥有包含大量冗余 br 标记的 HTML,到目前为止尝试 HtmlCleaner 和 jTidy 没有任何结果。

例子:

<br>
<br>
<br>
<br>
...

我只想得到一个 &lt;br&gt; 回来

还有其他方法可以在不逐行手动解析的情况下完成此操作吗?

【问题讨论】:

  • 更具体。比如给出一些 HTML 示例。
  • 基本上就是一堆重复的br标签,想换成一个br。刚刚为问题添加了更多细节。
  • 您可以通过在线压缩器发送您的 html,然后进行批量替换,即 willpeavy.com/minifier

标签: java html parsing jtidy htmlcleaner


【解决方案1】:

如果您只是想删除多余的&lt;br/&gt; 标签,那么我建议使用简单的解析状态机使用Jericho 进行解析,因为 Jericho 非常擅长保存数据。

状态机将简单地保留看到的最后一个标签,如果看到的最后一个标签是&lt;br/&gt; 标签,而下一个标签是&lt;br/&gt; 标签,您只需忽略它。这是一个非常简单的练习,我建议您尝试一下。我不推荐手动文本解析(即不使用 HTML 解析器),因为它很容易出错。

我还想提醒您,尽管人们可能会使用&lt;br/&gt; 标签,但它是一个明确的内容标签。所以删除标签就是改变内容。也许您可以从更结构化的来源(如 XML 提要、REST API 或数据库等)获取内容,而不是抓取一些 HTML。

【讨论】:

  • 你说得对,&lt;br /&gt; 实际上是内容。但我会说,有时删除换行符是一件好事,就像从前导或尾随空格中修剪字符串一样。
  • 某些法律文件和规范规范需要特定的空白间距。作为输入文档的用户,如果您剥离了我明确的新行,我会觉得很烦人。这与在标题字段等单个字段上修剪输入不同。
  • 是的,@AdamGent。但即使是 StackOverflow 似乎也能做到。例如,在这条评论中,换行符从评论中删除。 (我在 'for example' 之前和之后都有换行符。如果我编辑评论,它们仍然存在,但它们不可见。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
相关资源
最近更新 更多