Restful Web サービスからデータを取得する iOS アプリがあります。受信しているコンテンツの一部が に読み込まれていUITextView
ます。テキスト ビューに表示される部分は、HTML 形式で表示されます。段落タグを使用してテキストビューを適切にフォーマットしながら、HTML からプレーンテキストに変換する必要があります。
HTML形式は次のようになります
<p data-seq="1"><span class="paragraph">Content of paragraph 1</span></p><p data-seq="2"><span class="paragraph">Content of paragraph 2</span></p>
<p data-seq="2"><span class="paragraph">....</span></p>
が段落の開始と終了を示していることがわかります。
私は最初にNSScanner
この例から使用しようとしました。NSString HTML マークアップをプレーンテキスト NSString に変換する方法は? . これはすぐに実装できましたが、すべてのタグを取り除き、テキストを 1 つの長い段落として解析します。
libXml2
コードに追加しました。実装のためにこのチュートリアルに従い始めましたが、作業を開始した後、出力を段落にフォーマットする方法がわかりませんでした。
DTCoreText ライブラリの推奨事項も確認しましたが、多くの情報はありませんでした。
段落を維持しながらhtmlをプレーンテキストに解析する方法について、上記の3つのオプションのいずれか、または独自のオプションのいずれかを使用して、誰かがスニペットをスローする可能性がありますか?
解決
LXTの推奨に従って、調査しDTCoreText
ました。なんとかアプリにインストールできたら(そのためには間違いなくココアポッドをお勧めします)。#import "DTCoreText.h"
私のように簡単でdetailViewController
、次に以下の行でUITextView
.
NSDictionary *options = @{DTUseiOS6Attributes: [NSNumber numberWithBool:YES]};
NSData *htmlData = [self.htmlString dataUsingEncoding:NSUTF8StringEncoding];
NSAttributedString *stringArticle = [[NSAttributedString alloc] initWithHTMLData:htmlData options:options documentAttributes:NULL];
self.newsDetailText.attributedText = stringArticle;
行を含めなかったため、最初のビルドは失敗しましたDTUseiOS6Attributes
。2 番目のビルドは成功し、詳細ビューは完全にフォーマットされました。ガッツポーズの瞬間でした!おすすめのLXTをありがとうございます!