从html字符串中删除给定标签而不进行替换

时间:2019-04-12 12:43:31

标签: java android html dom

我想在将HTML字符串加载到WebView之前对其进行过滤:

我想使用该参数删除所有img标签:

data-custom:'delete'

例如

<img src="https://..." data-custom:'delete'/>

如何在Android中以一种优雅的方式做到这一点(如果可能,则无需外部库)

1 个答案:

答案 0 :(得分:1)

我要去做一个简单而优美的事情:

String element = "<img src='https://...' data-custom:'delete'/>";
String attributeRemoved = element.replaceAll("data-custom:['|\"].+['|\"]", "");

已根据评论更新

如果要删除整个标签,可以执行以下操作:

String elementRemoved = element.replaceAll("<.*data-custom:['|\"].+['|\"].*>", "");

如果只想对<img>标签进行操作,则可以执行以下操作:

String imgElementRemoved = element.replaceAll("<img.*data-custom:['|\"].+['|\"].*>", "");

一种更可靠的方法是将HTML解析为XML文档,并使用XPath查找具有data-custom属性的所有元素并将其从文档中删除,然后保存更新的文档。尽管您可以使用正则表达式来完成这些工作,但这通常不是一个好主意...