문제

XML 파일을 구문 분석하려고합니다.오늘까지는 아주 잘 작동했습니다 ...

여기에 내가 XML을 구문 분석하기 시작하는 방법 :

NSString *link = [[NSString alloc] init];
link = @"link_to_xml_file";

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] 
                                             cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                                         timeoutInterval:30.0];

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
.

에 수신 된 데이터를 사용하는 방법은 다음과 같습니다.

- (void)connection:(NSURLConnection *)theConnection 
    didReceiveData:(NSData *)incrementalData 
{
    if (data == nil)
        data = [[NSMutableData alloc] init];

    [data appendData:incrementalData];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",actual]];

    NSError *parseError = nil;
    NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] error:&parseError];

    if (parseError != nil) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:[parseError localizedDescription] delegate:nil cancelButtonTitle:@"Zurück" otherButtonTitles:nil];
        [alert show];
        [alert release];
    } //shows an alertview with NSXMLParserErrorDomain error 5

    NSLog(@"String: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); //returns null

    NSLog(@"Dictionary: %@",xmlDictionary); //returns null

    NSMutableDictionary *tempDictForAddDate = [[NSMutableDictionary alloc] initWithDictionary:xmlDictionary];

    NSDateFormatter *originalDate = [[NSDateFormatter alloc] init];
    [originalDate setDateFormat:@"dd.MM.yyyy"];

    NSString *today = [originalDate stringFromDate:[NSDate date]];

    [tempDictForAddDate setObject:today forKey:@"updated"];

    [tempDictForAddDate writeToFile:filePath atomically:YES];

    self.contentList = [[tempDictForAddDate objectForKey:@"xmlObject"] objectForKey:@"event"];

    [self sortContent];
}
.

XML 파일은 내 브라우저에서 작동합니다.모든 태그가 닫힙니다.오류가 없지만 파일의 데이터를 절대로 가져 오지 않습니다.

누군가가 도울 수 있기를 바랍니다.

mavrick3.

도움이 되었습니까?

해결책

비동기 URL 연결을 사용하는 (현명하게)하지만 DidReceiveData Delegate는 데이터가 들어오는 것처럼 여러 번 호출되므로 데이터를 파싱하는 지점에서 완료되지 않습니다.

구문 분석을 다음 대리자 메서드로 이동하려는 것입니다.

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

Apple의 설명서여기

편집 :

항상 XML의 유효성을 검증하는 것이 좋습니다 - W3C 도구를 사용하는 경향이있는 http : //www.w3schools.com/xml/xml_validator.asp

또한 일하는 것을 중단하는 데 사용되는 것들이 항상 바뀌었던 것을 항상 묻습니다.파일이 다릅니 까?더 큰거야?서버에 있고 브라우저가 캐시 된 버전을 사용하지 않는 것입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top