繁体   English   中英

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

[英]How to parse this XML file using Objective C?

我有以下结构的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解析并获取此数据?

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

由于标记内没有任何文本,因此可以在parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM