我有一个以下结构的XML文件:
<xmlDocument version="1">
<subject id="1">
<maths marks="65"/>
<science marks="80"/>
<tamil marks="90"/>
<social marks="79"/>
<English marks="70"/>
</subject>
</xmlDocument>
如何使用Objective C解析并获取此数据?
答案 0 :(得分:1)
NSXMLParser
的实例,并为解析器分配一个委托。NSXMLParserDelegate
协议的相关方法。parse
方法。答案 1 :(得分:0)
由于您的代码中没有任何文字,因此您可以在代理中使用parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict
方法。您可以将值存储在字典或对象中。如果您有多个subject
标记,则可以使用parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
更改解析器的上下文。官方文档应该为您提供有关可用方法的更多详细信息。
你可以做类似的事情(不完整的实施):
/*
* Incomplete implementation just to give some pointers
*/
@implementation MyDelegate
-(void) init {
if((self = [super init])) {
_subjects = [NSMutableArray new];
}
}
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict {
if([elementName equalsIgnoreCase:@"subject"]) {
_context = [NSMutableDictionary new];
} else {
[_context setObject:[attributeDict valueForKey:@"mark"] forKey:elementName];
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName {
[_subjects addObject:_context]
[_context release]; _context = nil;
}
@end
答案 2 :(得分:0)