IOS XML系统自带解析

本文介绍如何在iOS开发中使用苹果自带的NSXMLParser进行XML文件解析。通过遵循NSXMLParserDelegate协议并实现特定方法,可以有效地解析XML数据,并将其转换为易于处理的字典和数组形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在IOS开发过程中,苹果自带XML解析功能,给用户解析XML带来啦极大的便捷,使用如下:

调用系统解析
必须遵循NSXMLParserDelegate 协议

- (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;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值