【问题标题】:Remove a given tag from a html string without replace从 html 字符串中删除给定标签而不替换
【发布时间】:2019-09-03 05:37:42
【问题描述】:

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

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

data-custom:'delete'

举例

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

如何在 Android 中以优雅的方式做到这一点(如果可能,不使用外部库)

【问题讨论】:

标签: java android html dom


【解决方案1】:

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

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

根据评论更新

如果你想删除整个标签,你可以这样做:

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

如果您只想为&lt;img&gt; 标签执行此操作,您可以这样做:

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

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

【讨论】:

  • 我想删除整个 img 标签。将更新问题
  • "从 html 字符串中删除给定标签不替换"...所以答案的最后一部分是唯一有趣的部分,但不够详细。跨度>
  • 这听起来像是有用的相关信息,应该添加到问题中。为什么不想使用 Java 中的 replaceAll 方法?您现在实际上是在问如何在不进行替换的情况下执行替换?
猜你喜欢
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多