我正在尝试解析xml文件并且没有错误,但在尝试读取它时,解析器:didStartElement事件未被触发。我做错了什么?感谢帮助。
- (void)viewDidLoad
{
[super viewDidLoad];
// xml connect
NSURL *url = [[NSURL alloc] initWithString:@"http://www.test.com/list.xml"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
//Start parsing the XML file.
BOOL success = [xmlParser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Error!");
}
// reading xml...
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"main"]) {
//Initialize the array.
apps = [[NSMutableArray alloc] init];
}
else if([elementName isEqualToString:@"prog"]) {
//Extract the attribute here.
idUsuari = [attributeDict objectForKey:@"Id"];
NSLog(@"ID: %@", idUser);
}
}
答案 0 :(得分:5)
您尚未将视图控制器设置为XML Parser的委托:
[xmlParser setDelegate:self];
分配/ init后。如果没有这个,解析器就不知道将委托消息发送给谁。
答案 1 :(得分:0)
声明您当前的类符合NSXMLParserDelegate
,然后
[xmlParser setDelegate:self];
在解析之前,因此解析器知道可以调用您实现的委托方法。
例如
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
答案 2 :(得分:0)