0
我想解析一個XML文件。它的工作非常出色 - 直到今天...XML解析 - NSXMLParserErrorDomain錯誤5
以下是我開始解析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。
但它的工作直到今天...我把解析代碼扔到connectionDidFinishLoading:它仍然無法正常工作。當然,我沒有改變任何我的代碼,排序順序..我該怎麼辦? – 2011-03-30 12:24:46
好吧,所以我猜測它的工作只是因爲文件的大小比第一次發送的數據量小。把它移到正確的位置還是不錯的。我會再想一想... – Roger 2011-03-30 12:49:27
它被稱爲增量數據的原因。直到今天,你的回答可能會更小。每次' - (void)連接:(NSURLConnection *)theConnection didReceiveData:(NSData *)incrementalData'被調用時,您需要將該incrementalData追加到NSMutableData對象。其餘的代碼只需要移動到' - (void)connectionDidFinishLoading:(NSURLConnection *)connection' – Joe 2011-03-30 12:49:52