关于Android中如何过滤HTML标签

简介: 关于Android中如何过滤HTML标签

我们在开发过程中难免遇到与JS交互问题,在交互过程中我们从H5页面取出的数据带有HTML标签,这不是我们想要的,但是如何过滤掉呢?有两种方式:

第一:调用Java方法直接过滤

这种方式比较繁琐,需要一条一条的过滤,不是很优雅,因为我们无法保证每次页面的标签都是一致的,代码如下:

String content = data.getNoteContent();//content含有HTML标签
content = content.replace("<em>", "");
content = content.replace("</em>", "");
content = content.replace("<br>", "\n");
content = content.replace("</br>", "");
content = content.replace("&nbsp;", " ");
content = content.replace("<div>", "\n");
content = content.replace("</div>", "");
content = content.replace("<p>", "");
content = content.replace("</p>", "");
noteContent.setText(content);

最后的content就是没有带标签的

第二:使用正则表达式过滤

这是最理想的,不管你页面如何变,有多少标签,我只需调用一个方法解决,杠杠的代码如下:

 /**
 * 定义script的正则表达式  
 */
private static final String REGEX_SCRIPT = "<script[^>]*?>[\\s\\S]*?<\\/script>"; 
/**
 * 定义style的正则表达式
 */
private static final String REGEX_STYLE = "<style[^>]*?>[\\s\\S]*?<\\/style>";
/**
 * 定义HTML标签的正则表达式
 */
private static final String REGEX_HTML = "<[^>]+>"; 
/**
 * 定义空格回车换行符  
 */
private static final String REGEX_SPACE = "\\s*|\t|\r|\n";
public static String delHTMLTag(String htmlStr) { 
   // 过滤script标签  
    Pattern p_script = Pattern.compile(REGEX_SCRIPT, Pattern.CASE_INSENSITIVE);  
    Matcher m_script = p_script.matcher(htmlStr);  
    htmlStr = m_script.replaceAll(""); 
    // 过滤style标签  
    Pattern p_style = Pattern.compile(REGEX_STYLE, Pattern.CASE_INSENSITIVE);  
    Matcher m_style = p_style.matcher(htmlStr);  
    htmlStr = m_style.replaceAll(""); 
    // 过滤html标签
    Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);  
    Matcher m_html = p_html.matcher(htmlStr);  
    htmlStr = m_html.replaceAll("");   
    // 过滤空格回车标签  
    Pattern p_space = Pattern.compile(REGEX_SPACE, Pattern.CASE_INSENSITIVE);  
    Matcher m_space = p_space.matcher(htmlStr);  
    htmlStr = m_space.replaceAll(""); 
    return htmlStr.trim(); // 返回文本字符串  
   }  

调用的时候非常方便,如下:

String content = data.getNoteContent();//content含有HTML标签 
 
noteContent.setText(GlobalInfo.delHTMLTag(content));
目录
相关文章
|
1月前
|
移动开发 HTML5
HTML5标签的类型
HTML5标签的类型。
55 5
|
3月前
|
数据采集 移动开发 前端开发
HTML代码的革命:语义化标签的魅力,让你的网页结构焕然一新!
【8月更文挑战第26天】本文探讨了Web前端开发中的语义化标签概念及其重要性。语义化标签通过使用具有明确含义的HTML标签来构建页面结构,提升了网页的可访问性及搜索引擎优化效果,并增强了代码的可读性和维护性。文章还讨论了实际开发中遇到的问题及未来发展趋势。
53 0
|
15天前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
15天前
|
存储 移动开发 前端开发
|
1月前
|
前端开发
【HTML】img标签和超链接标签
【HTML】img标签和超链接标签
42 2
|
1月前
|
移动开发 前端开发 JavaScript
【HTML】HTML页面和常见标签
【HTML】HTML页面和常见标签
33 1
|
2月前
|
前端开发
前端基础(二)_HTML常用标签(块级标签、行级标签、行块级标签)
本文详细介绍了HTML中的常用标签,包括块级标签(如`h1`至`h6`、`p`、`div`等)、行级标签(如`span`、`b`、`strong`、`i`、`em`、`sub`、`sup`、`del`、`a`等),以及行块级标签(如`img`)。文章解释了这些标签的用途、特点和基本用法,并通过示例代码展示了如何在HTML文档中使用它们。
112 1
|
2月前
|
移动开发 开发者 UED
HTML5中video标签controlslist属性的使用方法
`controlsList`属性为开发者提供了更多控制HTML5视频播放器行为的能力,让视频内容的集成更加灵活和符合需求。通过精心设计的控制列表,可以提升用户体验,同时保持内容的安全性和专业性。这种细节的控制和定制能力是现代Web开发的一个重要方面,反映了HTML5对开发者和内容创作者需求的响应。
236 1
|
2月前
|
存储 JavaScript Java
使用NekoHTML解析HTML并提取META标签内容
关于NekoHTML的代码样例,这里提供一个简单的示例,用于展示如何使用NekoHTML来解析HTML文档并提取其中的信息。请注意,由于NekoHTML的具体实现和API可能会随着版本更新而有所变化,以下代码仅供参考。 ### 示例:使用NekoHTML解析HTML并提取META标签内容 ```java import org.cyberneko.html.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml
|
2月前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便