Android从html获取文本

Posted

技术标签:

【中文标题】Android从html获取文本【英文标题】:Android get text from html 【发布时间】:2011-07-28 13:44:41 【问题描述】:

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

&lt ;p &gt ;This is &lt ;a href=&quot ;http://www.test.hu&quot ;&gt ;a test link&lt ;/a&gt ;  and this is &amp ;nbsp;a sample text with special char: &amp ;#233;va &lt ;/p&gt ;

(在; char之前没有空格,但如果我不插入空格,***会格式化它)

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

<i><_p_>This is <_a_ href="http://www.test.hu">a test link<_/a_> and this is &nbsp;a sample text with special char: &#233;va <_/p_>
</i>

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

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

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

如何替换特殊字符和删除标签?

【问题讨论】:

【参考方案1】:

我想我回答 Robertoq 的问题为时已晚,但我相信很多其他人仍在为这个问题苦苦挣扎,我就是其中之一。

无论如何,我找到的最简单的方法是: 在 strings.xml 中,在 CDATA 中添加您的 html 代码,然后在 Activity 中检索字符串并将其加载到 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,它应该可以正常工作。如果您觉得这篇文章有用,如果您可以将其标记为已回答,我将非常感激,以便我们帮助其他人解决这个问题

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于Android从html获取文本的主要内容,如果未能解决你的问题,请参考以下文章

Android,从edittext中获取文本[重复]

Android:单击时如何从按钮获取文本? [复制]

如何从android中的edittext中获取选定的文本?

Android:使用 ListAdapter 从 TextView 获取特定文本

如何从图库中的图像中获取(提取)文本并搜索该文本 - Android?

Appium 自动化测试:如何从 android [android.view.View] 中的自定义 UI 中获取元素或文本