如何关闭HTML<p>标签且不换行,同时兼容JSoup解析?
解决方法
方案1:给闭合的<p>标签添加CSS消除默认间距
<p>标签默认是块级元素,浏览器会自动添加上下外边距,导致闭合后出现多余换行/空白。你可以通过内联CSS重置样式,让它既保持闭合状态(满足JSoup解析要求),又不会影响显示效果:
<p style="margin: 0; padding: 0;"> <strong>Foo</strong><br/> <strong>Bar</strong> </p>
如果需要将内容拆分为独立的行内块,也可以给<p>设置行内显示:
<p style="margin: 0; padding: 0; display: inline;"><strong>Foo</strong></p> <br/> <p style="margin: 0; padding: 0; display: inline;"><strong>Bar</strong></p>
这样JSoup能正常解析闭合标签提取文本,浏览器渲染时也不会产生多余间距。
方案2:替换<p>为行内元素<span>
如果不需要<p>的块级特性,直接用<span>包裹内容即可。<span>是行内元素,默认不会产生换行,闭合标签也不影响显示,同时JSoup能完美解析:
<span><strong>Foo</strong></span><br/> <span><strong>Bar</strong></span>
或者将内容放在同一个<span>里,用<br/>分隔,效果一致:
<span> <strong>Foo</strong><br/> <strong>Bar</strong> </span>
方案3:配置JSoup的宽容解析模式(仅作为备选)
如果无法修改HTML结构,可以让JSoup以宽容模式解析未闭合标签,比如使用XML解析器:
Document doc = Jsoup.parse(yourHtmlString, "", Parser.xmlParser());
不过这种方法可能导致DOM结构不可预测,优先推荐前两个方案。
内容的提问来源于stack exchange,提问作者pbuchheit
相关产品推荐
相关产品推荐

