2016-08-11 13 views
0

XMLデータを解析しようとしています。 XMLParserは使用しませんでした。私はこれを以下のコードで使用していました私はJSONとしてXMLを解析し、私は辞書形式の応答を得ていました。以下は私のコードである - このもののXMLデータの構文解析c

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

    [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 

     NSError *jsonError; 

    if (error == nil){ 

    NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; 

    if (jsonError) { 

    NSLog(@"Error : %@",error); 

    failureBlock(@{@"ErrorCode": [NSString stringWithFormat: @"%ld", (long)jsonError.code], 

    @"ErrorText": jsonError.localizedDescription}); 

    } else { 

    NSLog(@"success : %@",jsonResponse); 

    successBlock(jsonResponse); 

    } 

    }else{ 

    failureBlock(@{@"ErrorCode": [NSString stringWithFormat: @"%ld", (long)error.code], 

    @"ErrorText": error.localizedDescription}); 

    } 

    }] resume]; 

が働いたが、突然のすべては、私のようなエラーメッセージが出始めました - そして、それがどのように働いていた以前の

ErrorCode = 3840; 
    ErrorText = "The data couldn\U2019t be read because it isn\U2019t in the correct format."; 

?誰かが正しいXML解析を書く方法を教えてください。また、上記のコードでバイパスされているログインページを最初にリダイレクトするとxml urlが返され、XMLレスポンスが直接取得されます。アプリケーションでは、ログイン用のUIWebViewコンテナとして持っており、すべてのサービスコールでクッキーが適用されます。上記のコードでは、動作していたときにログインページをバイパスしてjson形式で応答を返していました。私もこのコードの下で試しました -

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

    [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 

     NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:data]; 

     [xmlparser setDelegate:self]; 

     [xmlparser parse]; 


    }] resume]; 

そしてdidStartElement、foundCharactersとdidEndElementと書いてあります。しかし、ログインページ自体を解析しようとしています。 NSXMLParserを使用すると、ログインページがバイパスされません。

ご迷惑をおかけして申し訳ございませんが、ご了承ください。

+0

https://github.com/nicklockwood/XMLDictionary

もがこのコードを試してみてください。 myDataエンコーディング:NSUTF8StringEncoding]; '、結果の文字列をNSLogし、正しい形式であるかどうかを確認します。 – Harsh

+0

JSONの場合はhttp://jsonlint.com/、XMLの場合はhttp://www.xmlvalidation.com/を使用して、応答が正しいかどうかを検証します。 – Harsh

+0

@Harshはい私はデータを印刷し、私の最初のアプローチはログインページを再び迂回していないようです。私はURLを変更して作業を開始しましたが、最初のアプローチはXMLを解析するのが正しいのですか? –

答えて

4

また、このリンク形式のXML解析を使用することができます。文字列フォーマット `NSStringの*のmyString = [[NSStringのはalloc] initWithDataにあなたの応答を変換し

NSString *baseUrl = [NSString stringWithFormat:@"your string"]; 


NSURL * url = [NSURL URLWithString:baseUrl]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
[request setHTTPMethod:@"GET"]; 
[request setHTTPShouldHandleCookies:NO]; 

[request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (error) { 
     failure(error); 
    } else if(response) 
    { 
     NSDictionary * jsonDic =[NSDictionary dictionaryWithXMLData:data]; 
     NSLog(@"Response print Hear%@",jsonDic); 

    } 
}];