2

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

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

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

我试过了

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

和其他变体,我什至尝试过手动格式化它,但这很痛苦。

我的问题是:

是否有一种简单、优雅的方法可以直接在我的 Android 应用程序中使用我的 Web 服务上的 PHP 或使用 Java 重新格式化所有这些文本?

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

4

3 回答 3

1

如果您将代码保留在适当的位置,则可以使用Tidy和 PHP 来清理代码。否则剥离 HTML 可能会使使用它更容易。

于 2012-04-21T00:23:14.417 回答
1

我会这样:不,没有简单、优雅的方法。HTML 结合了数据和视觉表示,它们本质上是相互联系的。要了解数据,您必须查看标签。标签喜欢<h1><a>带有含义。

如果 HTML 的结构足以将其分解为有意义的块:标题、正文和不相关/不重要的内容。然后你可以对这些应用重新设计原则。一个简单的解决方案是去掉所有标签,只获取 textNodes 并将它们拼接在一起。如果 HTML 的格式异常糟糕,您可能会得到乱序的句子,但如果 HTML 不是太做作,我希望这种方法应该有效。

为了让您了解所涉及的复杂性:您可以拥有<span>应用了样式的 s,例如display: block. 这改变了 span 的显示方式,从 inline 到 block,因此它的行为更像是 a <div>would。这意味着每个<span>人都可能在自己的行上,这似乎会强制换行。检测这些情况并非不可能,但它非常复杂。谁知道当你有列表元素、表格甚至浮动元素时会发生什么?他们可能完全不正常。

于 2012-04-21T00:25:26.337 回答
0

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

正如我所说,可能不是最优雅的解决方案,但在这种情况下它对我来说效果最好。

于 2012-04-21T17:19:17.103 回答