0

複雑ではないRSShtmlコンテンツをiPhoneで解析しようとしています。

したがって、重いHTMLパーサーは必要ありません。

ここで検索して、次の2つを見つけました。

https://github.com/topfunky/hpple

https://github.com/zootreeves/Objective-C-HMTL-Parser

どちらも使い方は簡単です。しかし、私は彼らが私の目的のために彼らの問題を抱えていると思います。

TFHppleの場合は適切ですが、すべての要素について、それ自体が完全なHTML<>を持っているわけではありません。たとえば、要素にはこの完全なタグ文字列がありません。HTML文字列全体から削除する必要があるため、この完全なタグ文字列が必要です。elementにそれがあればもっと便利です。

zootreeves HTML-Parserの場合も、シンプルで優れています。そして、それはすべての要素で完全なタグ文字列を持っています。私はとても幸せです。しかし、それは大きなメモリ消費者のようです。私はそれを監視しました。多数のHTMLフラグメント(たとえば、1000)を解析しようとすると、コストがかかり、占有されたままになるメモリは40MB程度です。iOSデバイスには適用されません。zootreevesは、純粋なCコードとリンクリストを使用して、HTMLのツリー構造を整理していると思います。純粋なmallocを使用し、メモリ用に解放します。それがiOSのメモリに影響するかどうかはわかりません。

だから、誰もが私のためにiOのための最先端のより良くて速くてシンプルなHTMLパーサーを推薦することができますか?

ありがとう

4

1 に答える 1

0

libxml2を使用します。xml だけではありません。HTMLパーサーもあります。高速でメモリが少なく、iOS で利用できます。唯一の欠点は、これが C ベースの API であることですが、それでも操作はそれほど難しくありません。

アップデート

以下の最初のコメントへの返答: しばらく経っているのでよくわかりませんが、そうは思いません。得られるのは、ドキュメント構造に関する多くの情報を含むデータ構造であり、各タグには属性/値のペアのリストがあります。元の html 文字列はどこにも保存されません (これは冗長と見なされ、メモリを節約するためではないと思います)。

ただし、実際にやりたいことには必要ないようです。パーサーからの情報を使用して元の文字列を変更し、HTML タグを取り除いているようです。代わりに、解析ツリーからの情報を使用してドキュメントを再構築する必要があります。これを行うときは、省略したいタグを除外します。

于 2011-08-11T09:46:10.990 に答える