mindworkstechnologies.com :

XcodeでXMLファイルを解析する方法

Objective - CでXMLファイルの解析

mindworkstechnologies.com
詳細を参照してください。
多くのアプリケーションへのバックボーンである1つの簡単な作業では、XMLファイルを解析する機能です。 そして、幸いにも、Xcodeは、Objective - CでXMLファイルを解析することを比較的容易に。

XMLファイルは、WebサイトのRSSフィードへのあなたのアプリケーションに関する基本的なデータから何かを含めることができます。 彼らはまた、このように単にリストに新しい項目を追加するためにAppleに新しいバイナリを提出する必要性をバイパスして、リモートでアプリ内の情報を更新する素晴らしい方法することができます。

では、どのようにXcodeでXMLファイルを処理するのですか?

プロセスは、要素内の個々の要素の開始、文字(値)、個々の要素の終了、および終了を、使用する変数を初期化するXMLパーサの処理を開始する、そのプロセスにファイルを供給するための手順が含まれています解析プロセスの。

この例では、我々はそれを特定のWebアドレス(URL)を渡すことによって、インターネットからファイルを解析することでしょう。

我々は、ヘッダファイルを構築することから始めましょう。 これは我々のファイルを解析するための最小要件と詳細ビューのコントローラのための非常に基本的なヘッダファイルの例です。







@interface RootViewController : UITableViewController {
DetailViewController *detailViewController;

NSXMLParser *rssParser;
NSMutableArray *articles;
NSMutableDictionary *item;
NSString *currentElement;
NSMutableString *ElementValue;
BOOL errorParsing;


}

@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;

- (void)parseXMLFileAtURL:(NSString *)URL;


parseXMLFileAtURL機能は私達のためのプロセスを開始します。 それが終了すると、NSMutableArrayの"記事は、"我々のデータを保持します。 配列は、XMLファイル内のフィールド名に関連するキーを変更可能な辞書で構成されます。

。今我々が必要な変数を設定したことが、我々は、mファイルでプロセスを満たすために移っていきます。


- (void)parserDidStartDocument:(NSXMLParser *)parser{
NSLog(@"File found and parsing started");

}


この関数は、プロセスの開始時に実行されます。 そこに、この関数で何かを入れる必要はありませんが、もしファイルが解析される起動時にタスクを実行する場合、これはあなたのコードを配置する場所です。


- (void)parseXMLFileAtURL:(NSString *)URL
{

NSString *agentString = @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1";
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:URL]];
[request setValue:agentString forHTTPHeaderField:@"User-Agent"];
xmlFile = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];


articles = [[NSMutableArray alloc] init];
errorParsing=NO;

rssParser = [[NSXMLParser alloc] initWithData:xmlFile];
[rssParser setDelegate:self];

// You may need to turn some of these on depending on the type of XML file you are parsing
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];

[rssParser parse];


}


この関数は、特定のWebアドレス(URL)でファイルをダウンロードし、それを解析するためのプロセスを開始するためにエンジンに指示します。 我々は、サーバがモバイル版にiPhone / iPadをリダイレクトしようとする場合にはMac上で実行されているのSafariであることをリモートサーバに指示している。

終了時のオプションは、特定のXMLファイルに固有のものです。 ほとんどのRSSファイルと汎用的なXMLファイルには、それらが有効になって必要はありません。


- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {

NSString *errorString = [NSString stringWithFormat:@"Error code %i", [parseError code]];
NSLog(@"Error parsing XML: %@", errorString);


errorParsing=YES;
}


これは、エラーが発生した場合、バイナリ値を設定する簡単なエラーチェックのルーティングです。 あなたがここに何をやっているかに応じて、より具体的なものが必要になる場合があります。 あなたが単にエラーの場合に処理した後、いくつかのコードを実行する必要がある場合は、errorParsingのバイナリ変数はその時点で呼び出すことができます。


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] init];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];

}

}


XMLパーサの肉は、次の3つの機能、個々の要素の開始時に実行するもの、要素を解析の途中で実行するもの、そして要素の最後に実行するものが含まれています。

この例では、我々は、XMLファイル内の"アイテム"の見出しの下にグループに要素を分解し、RSSファイルのようなファイルを解析することでしょう。 処理の開始時点で、我々は、要素名"項目"のチェックと新しいグループが検出されたときに私達の項目の辞書を割り当てています。 そうでなければ、我々は価値のために私達の変数を初期化します。




- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[ElementValue appendString:string];
}


これは簡単な部分です。 我々は文字を見つけたとき、我々は、単に私達の変数"ElementValue"に追加します。


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
[articles addObject:[item copy]];
} else {
[item setObject:ElementValue forKey:elementName];
}

}


我々は要素の処理が終了したら、我々は2つ​​のもののいずれかを実行する必要があります:最後の要素は"アイテム"の場合(1)、我々のグループを終えましたので、"記事の私達の配列に私たちの辞書を追加します"。 または(2)要素は、"アイテム"ではない場合、我々は、要素の名前と一致するキーを使用して私たちの辞書に値を設定してみます。 (これはXMLファイル内の各フィールドの個々の変数を必要としないことを意味します。私たちは、もう少し動的にそれらを処理することができます。)


- (void)parserDidEndDocument:(NSXMLParser *)parser {

if (errorParsing == NO)
{
NSLog(@"XML processing done!");
} else {
NSLog(@"Error occurred during XML processing");
}

}


これは我々の解析ルーチンに必要な最後の関数です。 それは、単にドキュメントを終了します。 あなたはどんなあなたがここにプロセスを終了するコード、またはエラーの場合に行う必要があります何か特別なことを置くことにしましょう​​。

多くのアプリがここで何をしたいかもしれないのは、データおよび/またはデバイス上のファイルへのXMLファイルを保存です。 その方法は、ユーザーがインターネットに彼らがアプリケーションをロードし、次回に接続されていない場合、彼らはまだこの情報を取得できます。

では、どのようにそれを実行するのですか?

もちろん、我々は、最も重要な部分を忘れることはできません:(!とそれでそれを見つけるためにウェブアドレスを与える)ファイルを解析するためにアプリケーションに指示。

プロセスを開始するには、単純に、XML処理を実行する適切な場所にこのコード行を追加する必要があります。


[self parseXMLFileAtURL:@"http://www.webaddress.com/file.xml"];



mindworkstechnologies.com :



ipad タスクトレイ 表示 lpad アプリケーション 削除 ipad itune アンインストール ipad アプリケーションの削除の仕方 ipad3 噂