background image

//开始解析前,可以做一些初始话的工作
- (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];
}