使用jsoup解析html并删除标记块

我想删除标签之间的所有内容。 输入的示例可以是

输入:

 start 
delete from below
first div having this class
waste
second div having this class
waste
delete till above
this will also remain
end

输出将是:

  start 
delete from below delete till above
this will also remain
end

基本上,我必须删除第一次出现

的整个块

谢谢,

您最好迭代找到的所有元素。 这样你就可以了

  • a。)删除所有元素
  • b。)如果没有元素,就什么也没做。

例:

 Document doc = ... for( Element element : doc.select("div.XYZ") ) { element.remove(); } 

编辑:

(我的评论的补充)

在此处进行简单的零/范围检查时,请勿使用exception处理:

 doc.select("div.XYZ").first().remove(); 

代替:

 Elements divs = doc.select("div.XYZ"); if( !divs.isEmpty() ) { /* * Here it's safe to call 'first()' since there at least one element. */ } 

试试这段代码:

 String data = null; BufferedReader br = new BufferedReader(new FileReader("e://XMLFile.xml")); StringBuilder builder = new StringBuilder(); while ((data = br.readLine()) != null) { builder.append(data); } System.out.println(builder); String replaceAll = builder.toString().replaceAll("
", ""); System.out.println(replaceAll);

我已从文件中读取输入XML并通过逐行读取将其存储在StringBuilder对象中,然后替换整个 标签将为空字符串。

昨天我问了这个问题,感谢ollo的回答。 它解决了。 有上述问题的延伸。 我不知道我是否必须开始一个新的post或链接这个。 所以,在这种混乱中,我在这里链接它。管理员请原谅我,如果我必须为此单独发布一个post。

在上面的问题中,我必须删除带有匹配组件的标记块。

真实的情况是:它应该删除带有匹配组件的标签块+删除
围绕它。

参考上面的例子。

  start 
delete from below

first div having this class
waste
second div having this class
waste

delete till above
this will also remain
end

也应该给出相同的输出:

  start 
delete from below delete till above
this will also remain
end

因为它已经在html标签块的上方和下方移除….

为了重新迭代,我使用ollo给出的解决方案来匹配并删除标记块。

 for( Element element : doc.select("div.XYZ") ) { element.remove(); } 

谢谢,谢卡尔

这可能对你有所帮助。

  String selectTags="div,li,p,ul,ol,span,table,tr,td,address,em"; /*selecting some specific tags */ Elements webContentElements = parsedDoc.select(selectTags); String removeTags = "img,a,form"; /*Removing some tags from selected elements*/ webContentElements.select(removeTags).remove();