【问题标题】:How to properly format text retrieved from a website?如何正确格式化从网站检索到的文本?
【发布时间】:2012-04-21 00:18:43
【问题描述】:

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

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

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

我试过了

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

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

我的问题是:

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

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

【问题讨论】:

  • 去掉所有 HTML 标签有帮助吗?
  • 这就是我对上述代码片段的尝试。没有帮助...我可能做错了什么,但我不知道是什么。附言很高兴在凌晨 3:30 在这里看到另一个罗马尼亚人:D

标签: php android textview format html


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我尝试使用上面提到的代码直接在我的应用程序中剥离标签。我可能做错了什么,因为它没有帮助。我也会尝试通过 PHP 剥离标签,但我希望让文本看起来尽可能接近原始网站
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2019-10-28
      • 2011-01-06
      • 2015-02-16
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多