0

XMLドキュメントをダウンロードしてiPhoneアプリで解析するために使用する古いアプリケーションがあります。そのために使用しNSURLConnectionました:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    //NSLog(@"Response :%@",response);
    responseData = [[NSMutableString alloc] init];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSString *str = [[NSString alloc] initWithData:data 
                                          encoding:NSASCIIStringEncoding];

    [responseData appendString:str];
    [str release];
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{

    NSLog(@"DATA : %@",responseData);   

    if (responseData != nil) {

        [self startParsing:responseData];//Parse the data
        [responseData release];
    }   
}   

で使用NSXMLParserDelegateするAFXMLRequestOperationようになったため、xml データを適切に取得する方法がわかりません。

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

    [responseData appendString:elementName];
    [responseData appendString:namespaceURI];
    [responseData appendString:qName];

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

}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    [responseData appendString:elementName];
    [responseData appendString:namespaceURI];
    [responseData appendString:qName];


}
-(void) parserDidEndDocument:(NSXMLParser *)parser{
    [SVProgressHUD showSuccessWithStatus:@"Downloading completed"];

        NSLog(@"DATA : %@",responseData);//not properly appended, tags delimeters are missing 

        if (responseData != nil) {

            [self startParsing:responseData];
            [responseData release];
        }


}

responseDataサーバーから受信したすべてのデータを変更可能な文字列に追加する方法は? ダウンロードの完了後に受信したデータをデバッグしたところ、xml にタグ区切り記号がありません<>。xml データを取得する方法が不足していると思います。

PS:オブジェクトで xml を取得することが重要であることに注意してくださいNSMutableString

@フェルミ

あなたが推奨したように使用AFURLConnectionOperationしましたが、目的には問題なく動作しますが、受信したデータがデリゲート メソッドによってキャッチされていないことに気付きました。代わりに、完了ブロックでデータを取得できます。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:API_URL]];

AFURLConnectionOperation *operation = [[AFURLConnectionOperation alloc] initWithRequest:request];
operation.completionBlock = ^{
    NSLog(@"Complete: %@",operation.responseString);//responseString is my data


};
[operation start];
[SVProgressHUD showWithStatus:@"Downloading files"];

デリゲートNSURLConnectionメソッドが呼び出されないので、どうすれば失敗などを管理できますか? ありがとう。

4

1 に答える 1

1

AFXMLRequestOperationNSXMLDocument生の XML 文字列ではなく、インスタンスを返すために使用することを明示的に意図しています。

XML 文字列が必要な場合は、.xmlと同じ方法で使用AFURLConnectionOperationおよび構築します。NSMutableStringNSURLConnection

于 2013-05-23T02:07:50.520 に答える