使用Jsoup替换所有非预测组合HTML标记

时间:2016-10-26 09:44:03

标签: java jsoup

我从网页上获取HTML并尝试从中检索数据。

我有像var g=svg.selectAll("g").data(dataSet) // <-- now changed from rect .enter() .append("g") // <-- and here .attr ("transform", function(d,i) { return "translate("+(i*35)+" 30)"; }) ; // texts n rects added here g.append("text").text(function(el){ return el; }) .attr("dy", "1em") g.append("rect") .attr("width", 30) .attr("height", 30) ; 这样的HTML,我想用<h3><strong>title</strong><h3>替换。 但是,有时我会在内容中找到意外的标签,例如:
<h2>

如何从字符串中删除空{h}标记,例如<h3><br/><strong>title</strong></h3><p><br></p>

2 个答案:

答案 0 :(得分:1)

你总是可以尝试在元素上使用jsoup的.text()方法来获取文本,并将它们放在h3中。

答案 1 :(得分:1)

要替换空元素,可以使用CSS选择器:empty。在循环中这样做,因为包含空元素的元素不被视为空,但在下一次迭代中将被删除。

要用<h3><strong>...</strong><h3>替换<h2><strong>...</strong><h2>代码并删除<h3>代码中的其他代码,请使用replaceWith

示例代码

Document doc = Jsoup.connect("url").get();

// clean up empty elements
while(!doc.select(":empty").isEmpty()){
    doc.select(":empty").remove();
}

//replace h3 with h2
doc.select("h3 > strong").forEach(strong -> {
    strong.parent().replaceWith(new Element(Tag.valueOf("h2"), "").html("<strong>" + strong.text() + "</strong>"));
});