从html字符串中删除给定标记而不替换

问题描述 投票:-3回答:1

我想在将其加载到WebView之前过滤html字符串:

我想用param删除所有img标签:

data-custom:'delete'

在例子中

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

如何在Android中以优雅的方式执行此操作(如果可能,不使用外部库)

java android html dom
1个回答
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查找具有数据自定义属性的所有元素并将其从文档中删除,然后保存更新的文档。虽然你可以用正则表达式来做这些事情,但通常不是一个好主意......

© www.soinside.com 2019 - 2024. All rights reserved.