Objective c 如何使用Objective C解析此XML文件?
我有一个结构如下的XML文件:Objective c 如何使用Objective C解析此XML文件?,objective-c,ios,xml,ios4,Objective C,Ios,Xml,Ios4,我有一个结构如下的XML文件: <xmlDocument version="1"> <subject id="1"> <maths marks="65"/> <science marks="80"/> <tamil marks="90"/> <social marks="79"/> <English marks="70"/> </subject> </xmlDocument> 如何使
<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解析和获取这些数据
NSXMLParser
的实例,并为解析器分配一个委托NSXMLParserDelegate
协议的相关方法parse
方法NSXMLParser
的实例,并为解析器分配一个委托NSXMLParserDelegate
协议的相关方法parse
方法由于标记中没有任何文本,因此可以对代理使用
解析器:(NSXMLParser*)解析器didStartElement:(NSString*)elementName属性:(NSDictionary*)attributeDict
方法。然后可以将值存储在字典或对象中。如果您有多个subject
标记,则可以使用parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName
更改解析器的上下文。官方文件应提供更多关于可用方法的详细信息
您可以这样做(不完整的实现):
由于标记中没有任何文本,因此可以对代理使用
解析器:(NSXMLParser*)解析器didStartElement:(NSString*)elementName属性:(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