首页 > 解决方案 > 从 html 字符串中删除给定标签而不替换

问题描述

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

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

data-custom:'delete'

在示例中

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

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

标签: javaandroidhtmldom

解决方案


我要去一个漂亮而简单的:

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 属性的元素并将它们从文档中删除,然后保存更新的文档。虽然你可以用正则表达式来做这些事情,但这通常不是一个好主意......


推荐阅读