どのように私は、HTTPレスポンスを検出XMLを解析し、NSStringのに保存できますか?
-
12-09-2019 - |
質問
私は数週間のためにこれを理解しようとしてきたと私はまだ何も得ます。私はASIHTTPRequestを使用していますが、サーバーに正常にデータを送っIVEと今私は、レスポンスのXMLを取得し、それを解析し、私はそれをサーバーに投稿することができ、各ラベルのNSStringに要素を保存する必要があります。誰もがこれを行う方法のアイデアを持っていますか?
解決
のページを使用する方法、私はあなたの何を考えますやりたいことは、要求が完了したときに呼び出すことができるメソッドを実装しています。たとえば、あなたはあなたの要求が完了したときに呼ばれるようにしたいメソッドdone:
を持っていると言います。あなたはリクエストに応じてあなたの「完成」セレクタとしてその方法を設定することができます:
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setDelegate:self];
[request setDidFinishSelector:@selector(done:)];
その後、あなたはdone:
メソッドを実装します:
- (void)done:(ASIHTTPRequest *)request
{
NSString *response = [request responseString];
}
これは、すべてあなたが非同期リクエストを送っていると仮定しています。あなたが同期呼び出しを使用している場合、あなただけのリクエストに応じてresponseString
プロパティを使用することができます。
他のヒント
iPhone用のXMLライブラリのコピーを取得します。
私は前に、このGoogleのGDataXMLNodeを使用しましたが、それはNSXML(残念ながらiPhone用付属していませんアップルライブラリー)に近い方ですので、私はおそらく、将来の仕事のためにKissXMLを使用します。
ここで応答を解析する方法があります、ここで私はあなたが通常の線に沿って、Railsのサーバから参照可能性のあるエラーを探しています
<errors><error>Description of what went wrong</error></errors>
あなたは、私が戻ってライブラリからの要求 'オブジェクトを取得し、私はGDataXMLDocumentに応答文字列を養うことがわかります。
GDataXMLDocument* root = [[GDataXMLDocument alloc] initWithXMLString:[request responseString] options:0 error:nil];
// Parse the error strings
NSArray* errors = [root nodesForXPath:@"//errors/error" error:nil];
// What is the first error string.... etc......
NSString* firstError = [[errors objectAtIndex:0] stringValue];
ここで返された配列は、XMLでそのパスに一致するノードのリストが含まれています。あなたは、XPathに慣れていない場合、それは学ぶことは難しいことではありませんし、XML応答からデータを引っ張るために有用。配列に返さ要素に対してのstringValueを呼び出すと、上記の例の構成要素間のテキストを返します。
あなたはもちろん返されたXMLデータでなど、辞書を移入することができます。意味をなさない?