【问题标题】:Parsing formatted text with jsoup使用 jsoup 解析格式化文本
【发布时间】:2016-12-11 12:36:31
【问题描述】:

我正在尝试使用 jsoup 解析 html 文本。例如,我在 html 中有以下行。

<p align='left'><font size='12.0pt'><u><i><b>A bold italic underlined text:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br></b></i></u></font><font size='12.0pt'><i><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></i></font><font size='9.0pt'><i> </i></font><font size='9.0pt'><b>This is only Bold&nbsp;&nbsp;</i></font><font size='9.0pt'><i> </i></font><font size='9.0pt'><i><b>&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></i></font><font size='9.0pt'>this is a simple line with white spaces at the end and at the beginnig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></p>

如何提取带有粗体、下划线和字体大小等格式信息的文本...

我尝试遍历所有元素并找到TextNodes,没有成功。

提前致谢

【问题讨论】:

  • 你想要&lt;p…&gt;…&lt;/p&gt;的内容吗?
  • 我可以通过document.text()获取

    的内容。我想要的是获取文本的所有格式信息,例如这部分....粗斜体下划线文本:  &nbsp ;    

标签: jsoup


【解决方案1】:

你可以通过selecting&lt;p&gt;…&lt;/p&gt;孩子获得这个:

Document doc = ...
Element content = doc.select("p > *").first();

选择器p &gt; * 为您提供&lt;p&gt;…&lt;/p&gt; 的直接子代。

结果:

<font size="12.0pt"><u><i><b>A bold italic underlined text:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br></b></i></u></font>

【讨论】:

  • 这是完美的 :) 我现在使用 for 循环来遍历元素,并且可以使用 'element.select("font").first()' 'element.select("u")。 first()' 来查找该元素的格式信息。但是还有一个问题,是否有任何选择语句来检查/查找在开头包含
    的元素,例如'
    粗斜体
    '
  • 是的,但我认为您需要在节点基础上处理&lt;br&gt;,因为它不包装它的元素。也可以选择&lt;br&gt; 并取其父元素。然而,这是一个新问题。
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 2012-12-27
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
  • 2019-10-10
相关资源
最近更新 更多