XML 구문 분석 - nsxmlparsererrordomain 오류 5.
-
14-11-2019 - |
문제
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
.
편집 :
항상 XML의 유효성을 검증하는 것이 좋습니다 - W3C 도구를 사용하는 경향이있는 http : //www.w3schools.com/xml/xml_validator.asp
또한 일하는 것을 중단하는 데 사용되는 것들이 항상 바뀌었던 것을 항상 묻습니다.파일이 다릅니 까?더 큰거야?서버에 있고 브라우저가 캐시 된 버전을 사용하지 않는 것입니까?
제휴하지 않습니다 StackOverflow