对于您的内存数据结构,一个NSMutableArray
ofNSDictionary
似乎是一种合理的方法。
基本上,您将拥有一系列回调,这些回调在NSXMLParser
您的 XML 文件中运行时构建该数组:
- (void) parseXML:(NSString *) filename {
NSURL *xmlURL = [NSURL fileURLWithPath:filename];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[xmlParser setDelegate:self];
[xmlParser parse];
// Check for errors.
NSError *errorCode = [xmlParser parserError];
if (errorCode) {
// handle error here
NSLog(@"%@", [errorCode localizedDescription]);
}
[xmlParser release];
}
还有你的主要代表:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
// If certain elements are found initialize the object
if ([elementName isEqualToString:"@file"]) {
NSMutableDictionary *currentFile = [[NSMutableDictionary alloc] init];
// Look through the attributes add stuff to your dictionary
// Add it to your array.
}
}
由于您的所有数据都在属性中返回,因此您可以这样做。foundCharacters
否则,当文件的标签出现在委托中时,您需要存储文件并构建它(委托)最终将其添加到您的数组中didEndElement
。