android TextView加载html 过滤所有标签,保留换行标签

情景:

TextView加载后端接口获取到的html富文本

遇到的问题:

客户端通过接口取到的数据如下:

<p style="margin-top: 0px; margin-bottom: 0px; padding: 0px;

用 TextView 的 Html.fromHtml 解析后很多标签都无法解析,以文案的形式显示出来了

问题分析及解决:

1、因html保存数据时为了避免XSS攻击,将html数据进行了转义,所以获取的数据不是以<> 这种html的格式出现,

转义规则参考: http://tool.oschina.net/commons?type=2,

转义后的

2、TextView加载时,先用   Html.fromHtml  进行转化为正常的html标签,

<p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; color: rgb(51, 51, 51);

但因为TextView支持的标签很少,导致显示有问题

3、用正则表达式过滤掉所有标签,只保留换行标签,如下:

private String getHTMLStr(String htmlStr){

        //先将换行符保留,然后过滤标签
Pattern p_enter = Pattern.compile("<br/>", Pattern.CASE_INSENSITIVE);
Matcher m_enter = p_enter.matcher(htmlStr);
htmlStr = m_enter.replaceAll("\n"); //过滤html标签
Pattern p_html = Pattern.compile("<[^>]+>", Pattern.CASE_INSENSITIVE);
Matcher m_html = p_html.matcher(htmlStr);
return m_html.replaceAll("");
}

  

上一篇:win10去除快捷方式小箭头


下一篇:在Scrapy项目【内外】使用scrapy shell命令抓取 某网站首页的初步情况