我想删除标签之间的所有内容。输入的示例可以是
输入:
<body>
start
<div>
delete from below
<div class="XYZ">
first div having this class
<div>
waste
</div>
<div class="XYZ">
second div having this class
</div>
waste
</div>
delete till above
</div>
<div>
this will also remain
</div>
end
</body>
输出将是:
<body>
start
<div>
delete from below
delete till above
</div>
<div>
this will also remain
</div>
end
</body>
基本上,我必须删除第一次出现<div class="XYZ">
谢谢,
答案 0 :(得分:15)
您最好迭代找到的所有元素。所以你可以保持
示例:强>
Document doc = ...
for( Element element : doc.select("div.XYZ") )
{
element.remove();
}
修改强>
(我的评论的补充)
在此处进行简单的 null- /范围检查时,不要使用异常处理:
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.
*/
}
答案 1 :(得分:1)
试试这段代码:
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("<div class=\"XYZ\".+?</div>", "");
System.out.println(replaceAll);
我已经从文件中读取了输入XML,并通过逐行读取将其存储在StringBuilder对象中,然后替换整个 标记将为空字符串。
答案 2 :(得分:0)
昨天我问了这个问题,感谢ollo的回答。它解决了。 有上述问题的延伸。我不知道我是否必须开始一个新的帖子或链接这个。所以,在这种混乱中,我在这里链接它。管理员请原谅我,如果我不得不为此单独发帖。
在上面的问题中,我必须删除带有匹配组件的标记块。
真实情况是:
它应该删除带有匹配组件的标记块+删除它周围的<br />
。
参考上面的例子。
<body>
start
<div>
delete from below
<br />
<br />
<div class="XYZ">
first div having this class
<div>
waste
</div>
<div class="XYZ">
second div having this class
</div>
waste
</div>
<br />
delete till above
</div>
<div>
this will also remain
</div>
end
</body>
也应该提供相同的输出:
<body>
start
<div>
delete from below
delete till above
</div>
<div>
this will also remain
</div>
end
</body>
因为html标记块上方和下方有<br />
要移除....
只是为了重新迭代,我使用ollo给出的解决方案来匹配并删除标记块。
for( Element element : doc.select("div.XYZ") )
{
element.remove();
}
谢谢, 谢卡尔
答案 3 :(得分:0)
这可能会对你有帮助。
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();