我正在为一家公司构建一个应用程序,不幸的是,该公司的网站设计非常糟糕。大多数HTML标签都是错误的,有时是随机放置的,过度使用不间断空格,p标签是随机分配的,它们不遵循任何规则等等......
我正在使用抓取工具从他们的网站检索数据,然后通过我自己的网络服务将结果字符串提供给我的应用程序。问题是,一旦将它显示到android textview中,文本的格式就会全部错误,传播和不均匀,非常混乱。
另外,值得一提的是,我不能建议公司出于各种原因修改他们的网站......我试过
String text = Html.fromHtml(myString).toString();
和其他变化,我甚至尝试手动格式化它,但这是一个痛苦。
我的问题是:
是否有一种简单,优雅的方式来重新格式化所有这些文本,无论是使用我的网络服务上的PHP还是使用Java,直接在我的Android应用程序中?
感谢任何愿意花时间回答的人......
答案 0 :(得分:1)
如果要保留代码,可以使用PHP Tidy来清理代码。否则剥离HTML可能会使它更容易使用它。
答案 1 :(得分:1)
我会这样:不,没有简单,优雅的方式。 HTML结合了数据和可视化表示,它们本质上是相互关联的。要了解数据,您必须查看标记。像<h1>
和<a>
这样的标签带有意义。
如果HTML的结构足以将其分解为有意义的块:标题,正文和不相关/不重要的东西。然后你可以将改造原则应用于那些。一个简单的解决方案是只删除所有标记,只获取textNodes并将它们拼接在一起。如果HTML格式异常糟糕,你可能会得到乱序的句子,但是如果HTML不太习惯,我希望这种方法可行。
为了说明所涉及的复杂性:您可以将<span>
应用于样式,例如display: block
。这会更改跨度显示的方式,从内联到块,因此它的行为更像<div>
。这意味着每个<span>
可能会在它自己的行上,它似乎会强制换行。检测这些情况并非不可能,但它非常复杂。谁知道当你有列表元素,表格甚至浮动元素时会发生什么;他们可能完全没有秩序。
答案 2 :(得分:0)
可能不是最优雅的解决方案,但我设法通过根据我需要的PHP(这很容易)剥离一些标签,然后将检索到的字符串显示为格式化的WebViews来获得最佳结果。
正如我所说,可能不是最优雅的解决方案,但在这种情况下,它最适合我。