iPhone開発-XMLParser vs. libxml2 vs. TouchXML
-
03-07-2019 - |
質問
これらの解析手法の比較が見つかりません。最も一般的に使用されるのはどれですか?
よろしく。 ムスタファ
解決
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をより使いやすくするために、ネイティブのObjective-Cラッパーが必要です。 TouchXMLはそのようなラッパーの1つです。 XMLへの読み取りアクセスのみが必要な場合にうまく機能します。 XMLを変更する場合、またはXMLフラグメント/ドキュメントをゼロから作成する場合は、 KissXMLを使用することをお勧めします。
他のヒント
を参照iOS向けXMLチュートリアル:iPhoneプロジェクトに最適なXMLパーサーを選択する方法:
iPhoneでのXMLの解析に関しては、多くのオプションがあります。 iPhone SDKには2つの異なるライブラリが用意されており、TBXML、TouchXML、KissXML、TinyXML、GDataXMLなどの一般的なサードパーティライブラリが利用できます。開発者はプロジェクトに最適なXMLパーサーをどのように選択しますか?
最近、私はさまざまなオプションを調べて、最終的にAppleのXMLPerformanceサンプルを拡張して、上記の各ライブラリを試して、どのように動作するかを調べ、パフォーマンスを比較しました。 iPhoneプロジェクトに最適なXMLライブラリを探しているかもしれない他の人たちに、これまでに学んだことを共有すると思った。
このXMLチュートリアルでは、最も人気のあるiPhoneライブラリの機能とパフォーマンスを詳細に比較し、それらの選択方法を説明し、それぞれを使用してXMLデータを読み取る方法を示すサンプルプロジェクトを提供します。上記のライブラリ...
別の優れたブロックベースのXML解析ライブラリ-RaptureXML( github )< href = "https://stackoverflow.com/users/185387/zablanc"> ZaBlanc 、libxml2の上にObjective-C APIを提供します。ぜひ試してください。