如何使用jsoup取消注释html标签
Posted
技术标签:
【中文标题】如何使用jsoup取消注释html标签【英文标题】:How to uncomment html tags using jsoup 【发布时间】:2014-01-11 21:30:06 【问题描述】:我想知道是否可以使用 jsoup 取消注释 html 标签,例如更改:
<!--<p> foo bar </p>-->
到
<p> foo bar </p>
【问题讨论】:
【参考方案1】:是的,这是可能的。这是解决此问题的一种方法:
-
查找所有评论节点
为每条评论提取数据属性
在当前评论节点之后插入一个包含数据的新节点
删除评论节点
看看这段代码:
public class UncommentComments
public static void main(String... args)
String htmlIn = "<html><head></head><body>"
+ "<!--<div> hello there </div>-->"
+ "<div>not a comment</div>"
+ "<!-- <h5>another comment</h5> -->"
+ "</body></html>";
Document doc = Jsoup.parse(htmlIn);
List<Comment> comments = findAllComments(doc);
for (Comment comment : comments)
String data = comment.getData();
comment.after(data);
comment.remove();
System.out.println(doc.toString());
public static List<Comment> findAllComments(Document doc)
List<Comment> comments = new ArrayList<>();
for (Element element : doc.getAllElements())
for (Node n : element.childNodes())
if (n.nodeName().equals("#comment"))
comments.add((Comment)n);
return Collections.unmodifiableList(comments);
鉴于此 html 文档:
<html>
<head></head>
<body>
<!--<div> hello there </div>-->
<div>not a comment</div>
<!-- <h5>another comment</h5> -->
</body>
</html>
将产生以下输出:
<html>
<head></head>
<body>
<div>hello there</div>
<div>not a comment</div>
<h5>another comment</h5>
</body>
</html>
【讨论】:
评论类,这是关键。以上是关于如何使用jsoup取消注释html标签的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有标签的情况下选择 HTML 标签中的文本(JSoup)
java 利用jsoup 如何去除一段代码中的所有html标签,只留纯文本
jsoup解析html时,若没有查找到相关标签,Element元素的返回值如何判断为空?
使用 Google Refine/OpenRefine & Jsoup/BeautifulSoup 解析和删除 HTML 标签