web-dev-qa-db-ja.com

iPhone開発-XMLParservs。libxml2 vs. TouchXML

これらの構文解析手法の比較は見つかりません。最も一般的に使用されているのはどれですか?

よろしく。ムスタファ

32
Mustafa

NSXMLParserは [〜#〜] sax [〜#〜] パーサーです。つまり、XMLドキュメントをステップスルーし、さまざまなイベント(xmlノードの開始など)を(デリゲートメソッドを介して)通知します。属性の検索など)。このタイプのXML処理は、巨大なドキュメントの解析や、大きなファイルから少量のデータを取得するだけでよい場合に最適です。

SAXとは対照的に、 [〜#〜] dom [〜#〜] モデルでは、XMLツリー全体がメモリに解析され(通常は1回の呼び出しで)、自由に探索できます。提示されたAPIからのXMLドキュメント。これは、xmlドキュメント全体にランダムアクセスできるため、一般的に操作がはるかに簡単です。

したがって、最初に答える必要がある質問は、SAXとDOMの質問です。大きなXMLファイル(たとえば10 MB以上)を使用している場合は、SAXを使い続けることをお勧めします。小さなXMLファイルまたは小さなXMLフラグメントを使用している場合は、多くの場合、DOMを使用する方がはるかに簡単です。

実際にDOMを使用することにした場合は、いくつかのオプションがあります。

libxml2は、Cで記述された非常に強力なAPIです。これは主にDOMスタイルで使用するためのものですが、経験を積んだ場合は他のオプションもあります。ただし、Cで記述されているため、Objective-C(オブジェクト、および自動リリース)に精通している人や、.Netの世界からやってくる人にとっては魅力的ではないことがよくあります。したがって、libxmlをより使いやすくするために、libxmlのネイティブObjective-Cラッパーが必要/望まれています。 TouchXMLはそのようなラッパーの1つです。 XMLへの読み取りアクセスのみが必要な場合にうまく機能します。 XMLを変更したり、XMLフラグメント/ドキュメントを最初から作成したりする場合は、 KissXML を使用することをお勧めします。

58
Robbie Hanson

iOS用のXMLチュートリアル:iPhoneプロジェクトに最適なXMLパーサーを選択する方法 :を参照してください。

IPhoneでXMLを解析する場合、多くのオプションがあります。 iPhone SDKには、選択可能な2つの異なるライブラリが付属しており、TBXML、TouchXML、KissXML、TinyXML、GDataXMLなどの人気のあるサードパーティライブラリがいくつかあります。開発者はどのようにしてプロジェクトに最適なXMLパーサーを選択しますか?

私は最近、さまざまなオプションを調べており、XMLPerformanceサンプルをAppleから拡張して、上記の各ライブラリを試して、それらがどのように機能するかを学び、パフォーマンスを比較することになりました。これまでに学んだことを、iPhoneプロジェクトに最適なXMLライブラリを探している他の人たちと共有したいと思いました。

このXMLチュートリアルでは、最も人気のあるiPhoneライブラリの機能とパフォーマンスの詳細な比較を行い、それらから選択する方法を説明し、上記の各ライブラリを使用してXMLデータを読み取る方法を示すサンプルプロジェクトを示します...

14
Andrew Kovzel

別の優れたブロックベースのXML解析ライブラリがあります-RaptureXML( github )by ZaBlanc 、libxml2の上にObjective-CAPIを提供します。ぜひ試してみることをお勧めします。

2
danylokos