//开始解析前,可以做一些初始话的工作
- (void)parserDidStartDocument:(NSXMLParser *)parser {
}
//解析到一个开始 tag,开始 tag 中可能会有 properpies,例如<book catalog=”Programming”>
//所有的属性都储存在 attributeDict 中
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if ([elementName isEqual:@"book"]) {
NSString *catalog = [attributeDict objectForKey:@"catalog"];
}
else if([bookTags containsObject:elementName]){
}
}
//这时处理例如<title lang=”en”>C++ Programming Language</title>的情况
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
}
//处理到一个结束 tag
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
}
//xml 解析结束
- (void)parserDidEndDocument:(NSXMLParser *)parser {
}
//例子,这里要特别注意的是 dataWithContentsOfFile 后面一定要根绝对路径,而 NSBundle
能根据文件名来得到这个绝对路径。
-(void) testXMLParse{
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@”test.xml” ofType:nil
inDirectory:nil];
NSData *fileData = [NSData dataWithContentsOfFile:xmlPath];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:fileData];
[xmlParser setDelegate:self];
BOOL result = [xmlParser parse];
if (!result) {
NSLog(@”The error is %@”, [xmlParser parserError]);
}
//[xmlParser release];
}