如何使用Objective C解析此XML文件?

时间:2011-12-13 10:57:54

标签: 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>

如何使用Objective C解析并获取此数据?

3 个答案:

答案 0 :(得分:1)

  1. 创建NSXMLParser的实例,并为解析器分配一个委托。
  2. 在您的委托类中,实施NSXMLParserDelegate协议的相关方法。
  3. 调用解析器的parse方法。
  4. 如果遇到问题,请提出更具体的问题。

答案 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)