如何正确格式化从网站检索的文本?

时间:2012-04-21 00:18:43

标签: php android textview format html

我正在为一家公司构建一个应用程序,不幸的是,该公司的网站设计非常糟糕。大多数HTML标签都是错误的,有时是随机放置的,过度使用不间断空格,p标签是随机分配的,它们不遵循任何规则等等......

我正在使用抓取工具从他们的网站检索数据,然后通过我自己的网络服务将结果字符串提供给我的应用程序。问题是,一旦将它显示到android textview中,文本的格式就会全部错误,传播和不均匀,非常混乱。

另外,值得一提的是,我不能建议公司出于各种原因修改他们的网站......

我试过

String text = Html.fromHtml(myString).toString();

和其他变化,我甚至尝试手动格式化它,但这是一个痛苦。

我的问题是:

是否有一种简单,优雅的方式来重新格式化所有这些文本,无论是使用我的网络服务上的PHP还是使用Java,直接在我的Android应用程序中?

感谢任何愿意花时间回答的人......

3 个答案:

答案 0 :(得分:1)

如果要保留代码,可以使用PHP Tidy来清理代码。否则剥离HTML可能会使它更容易使用它。

答案 1 :(得分:1)

我会这样:不,没有简单,优雅的方式。 HTML结合了数据和可视化表示,它们本质上是相互关联的。要了解数据,您必须查看标记。像<h1><a>这样的标签带有意义。

如果HTML的结构足以将其分解为有意义的块:标题,正文和不相关/不重要的东西。然后你可以将改造原则应用于那些。一个简单的解决方案是只删除所有标记,只获取textNodes并将它们拼接在一起。如果HTML格式异常糟糕,你可能会得到乱序的句子,但是如果HTML不太习惯,我希望这种方法可行。

为了说明所涉及的复杂性:您可以将<span>应用于样式,例如display: block。这会更改跨度显示的方式,从内联到块,因此它的行为更像<div>。这意味着每个<span>可能会在它自己的行上,它似乎会强制换行。检测这些情况并非不可能,但它非常复杂。谁知道当你有列表元素,表格甚至浮动元素时会发生什么;他们可能完全没有秩序。

答案 2 :(得分:0)

可能不是最优雅的解决方案,但我设法通过根据我需要的PHP(这很容易)剥离一些标签,然后将检索到的字符串显示为格式化的WebViews来获得最佳结果。

正如我所说,可能不是最优雅的解决方案,但在这种情况下,它最适合我。