【发布时间】:2021-01-08 07:21:39
【问题描述】:
我需要用 jsoup 检测严格相邻的元素。为此,我将使用How to detect strictly adjacent siblings 中提供的示例,但我需要 Jsoup - java 的工作示例。
输入
<div id="container">
<span class="highlighted">Paragraph 1</span>
<span class="highlighted">Paragraph 2</span>
This is just loose text.
<p class="highlighted">Paragraph 3</p>
</div>
我想要完成的是用所有同级相似元素的文本构建单个元素。
private String removeSimilarTags(String htmlContent){
org.jsoup.nodes.Document doc = Jsoup.parse(htmlContent);
Elements highlightedSpanElements = doc.select("span.highlighted"); //Selecting all spans with class highlight
for(Element span : highlightedSpanElements){
Element beforeEl = span.previousElementSibling();
if(span != null) //I need another function to verify if element has been already removed{
beforeEl.after("<span class='"+HIGHLIGHT+"'>"+mergeAdjacentSpans(span)+"</span>");
}
}
return doc.outerHtml();
}
private String mergeAdjacentSpans(Element span){
Element nextEl = span.nextElementSibling() != null ? span.nextElementSibling() : null;
String text = span.text();
if(nextEl != null && nextEl.tagName().equalsIgnoreCase(SPAN_TAG)
&& nextEl.classNames().contains(HIGHLIGHT)){
//Next Element is also a highlighted span
text = text.concat(" "+ mergeAdjacentSpans(spanEl));
}
span.remove();
return text;
}
我还想了解如何验证元素是否已被删除。我在网上找不到明确的答案。
谢谢你们!
【问题讨论】:
标签: java html dom jsoup siblings