iOS DeveloperiOS 开发

XML系统自带解析

2016-03-28  本文已影响110人  zhangyunjiang

调用系统解析

必须遵循NSXMLParserDelegate协议

1.- (void)viewDidLoad
{    [super viewDidLoad];
//指定xml文件
NSString *path=[[NSBundle mainBundle] pathForResource:@"person.xml" ofType:nil];
//转化为二进制对象
NSData *data=[NSData dataWithContentsOfFile:path];
//为person指定初始值
NSXMLParser *parson=[[NSXMLParser alloc]initWithData:data];
//指定代理
parson.delegate=self;
//解析
BOOL b=[parson parse];
if (b) {
        NSLog(@"解析成功");
}

}

开始解析

-(void)parserDidStartDocument:(NSXMLParser *)parser{
self.arr=[NSMutableArray array];}

解析结束

-(void)parserDidEndDocument:(NSXMLParser *)parser{
 NSLog(@"%@",self.arr);
 }

解析过程

当文件遇到User元素时,创建一个字典用于接收

 /***  文档元素解析开始 (当文件遇到User元素时,创建一个字典用于接收)
  *  @param parser        解析的对象
  *  @param elementName   文档里元素名称
  *  @param namespaceURI  命名空间 
  * @param qName 
  * @param attributeDict 属性的字典 
  */
  -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{    
  在文档中User元素时,初始化字典
if ([elementName isEqualToString:@"User"]) {
    self.dicM=[NSMutableDictionary dictionary];
    //添加字典元素
    [self.dicM setDictionary:attributeDict];
}}

将符合关键字的元素d添加到字典中

 /***  解析文件元素的内容
 *  @param parser       解析对象 
 *  @param elementName  文档里元素名称
 *  @param namespaceURI 命名空间 
 *  @param qName 
 */
 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
判断元素的关键字,只有符合的才将元素添加到字典
if ([elementName isEqualToString:@"name"]) {
    [self.dicM setObject:self.str forKey:elementName];
}    else if ([elementName isEqualToString:@"age"])
{        [self.dicM setObject:self.str forKey:elementName];
} 
 只有见到User才将字典添加到集合
else if ([elementName isEqualToString:@"User"])
{        [self.arr addObject:self.dicM];
}}

得到数据关键字的值

/** *  解析文件元素的内容
 * *  @param parser 解析对象
 *  @param string 显示的文件的内容
 */
 -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
     self.str=string;
 }
上一篇下一篇

猜你喜欢

热点阅读