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委托将多次调用,因为数据进来,因此在解析它的点时不会完整。
您可能希望将解析移动到以下委托方法中。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
.
编辑:
始终是正式验证您的XML的好主意 - 我倾向于使用W3C工具 http:// www.w3schools.com/xml/xml_validator.asp
也,当曾经工作停止工作的事情时,我总是问自己改变了什么?文件是不同的吗?它更大吗?您是否确定它存在于服务器上,并且您的浏览器没有使用缓存版本?
不隶属于 StackOverflow