首页 文章

Android从html获取文本

提问于
浏览
6

我得到一个特殊的HTML代码:

< p>这是< a href =" http://www.test.hu">测试链接< / a>这是一个带有特殊字符的示例文本:é va< / p>

(以前没有空格; char,但是如果我不插入stackoverflow格式的空间呢)

这不是一个通常的HTML代码,但如果我粘贴在一个空的html页面,浏览器会显示正常的标签:

<p>这是<a href="http://www.test.hu">测试链接</a>,这是一个带有特殊字符的示例文本:éva</ p>

此代码将显示在浏览器中:

这是一个测试链接这是一个带有特殊字符的示例文本:éva

所以我想得到这个文本,但我不能使用 Html.fromHtml ,因为我使用的组件不支持 Spanned . 我想尝试 StringEscapeUtils ,但我无法导入它 .

如何更换特殊字符并删除标签?

2 回答

  • 1

    编写一个解析器,与您必须解析数据的任何其他情况没有什么不同 .

    现在,如果您可以将其作为普通的非转义HTML,那么您可以使用各种开源Java HTML解析器 . 如果您要在第一个示例中使用转义的HTML,则必须自己编写解析器 .

  • 1

    我想我已经来不及回答罗伯托克的问题,但我相信很多其他人仍然在讨论这个问题,我就是其中之一 .

    无论如何,我找到的最简单的方法是:在 strings.xml 中,在 CDATA 中添加你的html代码,然后在活动中检索字符串并将其加载到 WebView 中,这是示例:

    在strings.xml中:

    <string name="st1"><![CDATA[<p>This is <a href="http://www.test.hu">a test link</a> and this is  a sample text with special char: éva </p>]]>
    </string>
    

    你可能希望用&eacute取代é; (注意: &eacute; 之间没有空格)

    现在,在您的活动中,创建WebView并将字符串st1加载到它:

    WebView mWebview = (WebView)findViewById(R.id.*WebViewControlID*);
    mWebview.loadDataWithBaseURL(null, getString(R.string.st1), "text/html", "utf-8", null);
    

    而horraaa,它应该正常工作 . 如果你发现这篇文章很有用,如果你能把它标记为已回答,我会很高兴,所以我们帮助其他人解决这个问题

相关问题