2012-02-28 14 views
1

私は最高のXMLパーサのiOSはどれこれはiOSの適切なxmlパーサーですか?

enter image description here enter image description here 、次のXMLファイルを解析します。私はSBJONライブラリのようにそれを解析したい、私はそれを動的に解析したいという意味です。たとえば、すべてPOSITION_DATA要素データをNSMutableDictionaryに格納し、その辞書をNSMutableArrayに格納する必要があります。

SBJONライブラリを使用すると、XMLファイルを含むすべてのデータの最初の配列が取得されます。配列から適切なデータを抽出する必要があります。

iOSでobjective-Cを使用してこのようにすることはできますか? 私はすでにTBXMLライブラリを使用していますが、私はそれが与えられたXMLファイル形式には適していないと思います。また、私はTouchXMLライブラリを使用しますが、コンパイル時にエラー "touchxmlライブラリとlibxml/tree.hにそのようなファイルやディレクトリがありません"というエラーが表示されます。

このばかな解析問題から私を助けてください。

おかげで、 RRB

+0

TouchXMLの問題を別個の質問として投稿する価値があります。 StackOverflowは明確な答えを使って簡単な質問に最適です。そうすれば、そのオプションを試すことができます。 – Tommy

+0

あなたの答えはあなたのために見つけましたか? – QED

+0

@psoft、下記の受け入れられた回答をご覧ください。 – Tirth

答えて

2

NSXMLParserは、標準的なココアのXML解析ツールです。 NSXMLParserDelegateインターフェイスの実装を作成し、それを作成したNSXMLParserに渡します。自分のモデルクラスのそれぞれに対してデリゲートを作成し、必要に応じてXMLツリーの解析中にプッシュしてポップするのが好きです。外部クラスのデリゲートからコールバックを作成して、デリゲートが作成するオブジェクトと何かを行うことができます。

アップルはドキュメントhereを提供しています。 AppleのSeismicXMLの例は、バックグラウンド解析の良い例です。

2

NSXMLParserのドキュメントをご覧ください。これはiOSに含まれています。 XMLデータをXMLデータのインスタンスに送り、そのXMLデータをデリゲートにして解析するように指示します。

NSXMLParser * parser = [[NSXMLParser alloc] initWithData:xmlData]; 
parser.delegate = self; 
[parser parse]; 

そして

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 

を実装これら三つの方法は、タグ内およびタグ近い上のデータに遭遇し、オープンタグで呼び出されます。文字列をelementName引数と比較し、適切と思われるオブジェクトにデータを格納することで、XMLで必要なタグを聴くことができます。

実装の詳細については、Appleのドキュメントを参照してください。サードパーティのツールキットを使用して、必要なことを行うクラスが組み込まれている場合はなぜですか?

1

https://github.com/TouchCode/TouchXML

後で感謝します。私はNSXMLParserに立つことはできません。

編集:ダウンロードのDocsフォルダに含まれているインストール手順に必ず従ってください。 lib xmlエラーを取り除く方法を紹介します。

+0

+1の代替案を提案していますが、TouchXMLからNSXMLParserを好む理由についてコメントすることはできますか? – Tommy

+1

soap-boxオピニオンのようなものですが、状態を把握するためにifステートメントとiVarsの勢いでデリゲートメソッドを作成する必要があります。 TouchXMLのようなもので、XML文字列からドキュメントを作成し、必要な要素をXpathから取得し、文字列値または子要素を取得できます。将来的にそれに取り組む人々のために、特に読んだり、フォローしたりする方がはるかに簡単です。 –

0

NSXMLParserは、標準的なXML構文解析ツールである持っています。

関連する問題