当前位置: 首页 > 面试题库 >

使用JSoup在保留换行符的同时删除HTML实体

许奇
2023-03-14
问题内容

我一直在使用JSoup解析歌词,到目前为止一直很棒,但是遇到了问题。

我可以Node.html()用来返回所需节点的完整HTML,这样就保留了换行符:

Glóandi augu, silfurnátt
<br />Bl&oacute;&eth; alv&ouml;ru, starir &aacute;
<br />&Oacute;&eth;ur hundur er &iacute; v&iacute;gam&oacute;&eth;, &iacute; maga... m&eacute;r
<br />
<br />Kolni&eth;ur gref, kvik sem dreg h&eacute;r
<br />Kolni&eth;ur svart, hvergi bjart n&eacute;

但是,如您所见,保留HTML实体和标签具有不幸的副作用。

但是,如果使用Node.text(),我可以获得更好的外观,并且没有标签和实体:

Glóandi augu, silfurnátt Blóð alvöru, starir á Óður hundur er í vígamóð, í maga... mér Kolniður gref, kvik sem dreg hér Kolniður svart,

这有另一个不幸的副作用,即删除了换行符并压缩为单行。

<br />在调用之前简单地从节点进行替换会Node.text()产生相同的结果,而且该方法似乎将文本压缩到方法本身的一行中,而忽略换行符。

是否有可能两全其美,可以正确地替换标签和实体以保留换行符,还是有另一种方法或方法可以解码实体并删除标签而不必手动替换它们?


问题答案:

(免责声明)我没有使用过此API …但是快速浏览一下文档建议您可以访问每个后代节点并转储其文本内容。<br>遇到特殊标记时,可以插入中断。

该TextNode.getWholeText()调用看起来也很有用。



 类似资料:
  • 我必须解析一些html并移除锚标记,但我需要保留锚标记的innerHTML 例如,如果我的html文本是: 现在我可以解析上面的html并在jsoup中选择如下所示的标记, 我可以通过, 但是它会从开始括号到结束括号删除完整的achor标记,并且内部html会丢失,如何才能保留只删除开始和结束标记的内部html。 另外,请注意:我知道有从元素中获取outerHTML()和innerHTML()的方

  • 问题内容: 我有以下代码: 结果是: 但我想打破界限: 我已经看过jsoup的TextNode#getWholeText(),但是我不知道如何使用它。 如果我解析的标记中有一个,如何在结果输出中换行? 问题答案: 保留换行符的真正解决方案应该是这样的: 满足以下要求: 如果原始html包含换行符(\ n),则保留它 如果原始html包含br或p标签,它们将被翻译为换行符(\ n)。

  • 我是jsoup的新手,在使用非HTML元素(脚本)时遇到了一些困难。我有以下HTML: 用于显示这一点的应用程序知道如何处理 和.语句。因此,当我简单地用jsoup解析文本时,<和>被编码,html被重新组织,所以它不能正确地执行或显示。例如: 我的最终目标是添加一些css和js包含,并修改几个元素属性。那真的不是问题,我已经解决了那么多了。问题是我不知道如何保留非HTML元素,并将格式与原始格式

  • 问题内容: 我有一个简单的形式,像这样: 我将数据记录为以下三段: 在模板中,我想以只读方式查看该记录的内容。(不可编辑的表格) 在这种情况下,记录是包含数据的模型: -> 我该怎么做才能显示多行? 问题答案: 包括换行符在内的所有空格都被转换为HTML中的单个空格。 您的选择,从最佳到最差: 放在包含元素上。这告诉HTML完全显示源代码中显示的所有空白,包括换行符。(您也可以使用标签,但是这也会

  • 问题内容: 我有一个带有textarea的表单,我想保留输出内容时用户输入的换行符。 例如,如果我在textarea中写: 这是一个句子。这是另一个。这里还有一个。 这是一个新段落。这是一个新句子。这是另一个。 我想要相同的输出,而 不是 : 这是一个句子。这是另一个。这里还有一个。这是一个新段落。这是一个新句子。这是另一个。 如何保留换行符? 问题答案: 通常,您只需要添加 空格修剪为单个空格

  • 问题内容: 我的代码而不是使用代码,因为我之前有过。 所以我的代码: 项目说明包含未呈现的换行符。 假设我已具备上述条件,如何轻松显示换行符? 问题答案: 基于@pilau的答案-但经过改进,即使是公认的答案也没有。 这将使用给定的换行符和空格,但也会在内容边界处中断内容。有关空白属性的更多信息,可以在这里找到: https://developer.mozilla.org/zh-CN/docs/W