2

残念ながら、Web サイトのデザインが非常に貧弱な会社のアプリケーションを作成しています。ほとんどの HTML タグが間違っており、場合によってはランダムに配置されている、改行なしスペースが過剰に使用されている、p タグがランダムに割り当てられている、ルールに従っていないなど...

クローラーを使用して Web サイトからデータを取得し、結果の文字列を自分の Web サービスを介してアプリケーションに供給しています。問題は、それをAndroidのテキストビューに表示すると、テキストがすべて間違ってフォーマットされ、広がり、不均一になり、非常に無秩序になることです。

また、さまざまな理由から、ウェブサイトを変更することを会社に提案することはできません...

私はもう試した

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

および他のバリエーション、手動でフォーマットしようとさえしましたが、それは苦痛でした.

私の質問は:

このすべてのテキストを再フォーマットする簡単でエレガントな方法はありますか? Web サービスの PHP または Java を使用して、Android アプリケーションで直接実行できますか?

時間をかけて答えてくれる人に感謝します...

4

3 に答える 3

1

コードを適切な場所に保持している場合は、PHP でTidyを使用してコードをクリーンアップできます。それ以外の場合は、HTML を削除すると、おそらく作業がずっと簡単になります。

于 2012-04-21T00:23:14.417 に答える
1

いいえ、簡単でエレガントな方法はありません。HTML はデータと視覚的表現を組み合わせたものであり、それらは本質的にリンクしています。データを理解するには、タグを確認する必要があります。タグのよう<h1><a>意味を持ちます。

HTML が意味のあるブロック (ヘッダー、本文、無関係/重要でないもの) に分割できるほど十分に構造化されている場合。次に、それらにスタイル変更の原則を適用できます。簡単な解決策は、すべてのタグを取り除き、textNodes だけを取得して、それらをつなぎ合わせることです。HTML のフォーマットが非常に不適切な場合は、文が乱れる可能性がありますが、HTML があまり不自然でない場合は、このアプローチが機能するはずです。

関連する複雑さを示す<span>ために、たとえば、スタイリングが適用された を使用できますdisplay: block。これにより、スパンの表示方法がインラインからブロックに変更されるため、より意のままに動作します<div>。これは、それぞれ<span>が独自の行にある可能性が高いことを意味し、改行を強制するように見えます。これらの状況を検出することは不可能ではありませんが、非常に複雑です。リスト要素、テーブル、さらにはフローティング要素を取得したときに何が起こるかは誰にもわかりません。完全に故障している可能性があります。

于 2012-04-21T00:25:26.337 に答える
0

おそらく最も洗練された解決策ではありませんが、PHP で必要なものに応じていくつかのタグを削除し (これは非常に簡単でした)、取得した文字列を書式設定された WebView に表示することで、最良の結果を得ることができました。

私が言ったように、おそらく最もエレガントな解決策ではありませんが、この場合はそれが私にとって最もうまくいきました.

于 2012-04-21T17:19:17.103 に答える