使用RXMLElement工具类解析XML

    现在来写一篇我最近使用过的一种XML解析的方法的文章。XML解析有多种多样的方法,包括苹果自带的方法和各种工具类,今天我只介绍用RXMLElement的工具类来解析XML。

    使用步骤:

    1.首先把XML解析类导入工程;

    2.然后在加入框架libxml2.dylib;

    3.最后把Header search Paths的路径设置一下:/usr/include/libxml2

    最后上代码:

//MARK:解析xml
- (void)analysisXmlContents{
    
//    NSString *xmlFileString = [[NSBundle mainBundle] pathForResource:@"app" ofType:@"xml"];
//    //    NSData *xmlData = [NSData dataWithContentsOfFile:xmlFileString];
//    
//    NSString*conte=[NSString stringWithContentsOfFile:xmlFileString encoding:NSUTF8StringEncoding error:nil];
//    stringcontents=conte;
    
    
    //获取存储的文件路径
    NSString*filepath=[[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"app.xml"];
    
    //获取文件内容
    NSString*conte=[NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];
    stringcontents=conte;
    
    if ([self isBlankString:stringcontents]) {
        NSString *xmlFileString = [[NSBundle mainBundle] pathForResource:@"app" ofType:@"xml"];
        NSString*conte=[NSString stringWithContentsOfFile:xmlFileString encoding:NSUTF8StringEncoding error:nil];
        stringcontents=conte;

    }
    if([self isBlankString:stringcontents])
    {
       return;
    }else
    {
        
    }
    //解析文件内容
    NSLog(@"path=%@",filepath);
    
     
    RXMLElement*rootxml=[RXMLElement elementFromXMLString:stringcontents encoding:NSUTF8StringEncoding];
    self.allArray=[NSMutableArray arrayWithCapacity:0];
    self.allArray2=[NSMutableArray arrayWithCapacity:0];
    self.allArray3=[NSMutableArray arrayWithCapacity:0];

    self.yijiArray=[NSMutableArray arrayWithCapacity:0];
    self.yijiArray2=[NSMutableArray arrayWithCapacity:0];
    self.yijiArray3=[NSMutableArray arrayWithCapacity:0];

    self.erjiArray=[NSMutableArray arrayWithCapacity:0];
    self.sanjiArray=[NSMutableArray arrayWithCapacity:0];
    self.erjiarray=[NSMutableArray arrayWithCapacity:0];
    self.sanjiarray=[NSMutableArray arrayWithCapacity:0];

    //解析数据
    [rootxml iterate:@"Content" usingBlock:^(RXMLElement*xmlContent){
        
        NSString*contents_ele=[xmlContent attribute:@"Name"];

        
        if([contents_ele isEqualToString:@"OnArea11Light"]){
            kaizhaomingAction=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关灯的 Action
        if([contents_ele isEqualToString:@"OffArea11Light"]){
            guanzhaomingAction=[xmlContent attribute:@"Action"];
        }
        //取得开投影的Action
        if([contents_ele isEqualToString:@"OnArea11Monitor"]){
            kaipingmuAction=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关投影的 Action
        if([contents_ele isEqualToString:@"OffArea11Monitor"]){
            guanpingmuAction=[xmlContent attribute:@"Action"];
        }
        //取得开投影的Action
        if([contents_ele isEqualToString:@"OnArea11TouchScreen"]){
            kaichumopingAction=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关投影的 Action
        if([contents_ele isEqualToString:@"OffArea11TouchScreen"]){
            guanchumopingAction=[xmlContent attribute:@"Action"];
        }
        //取得开投影的Action
        if([contents_ele isEqualToString:@"OnArea11LedTitle"]){
            kailedtitleAction=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关投影的 Action
        if([contents_ele isEqualToString:@"OffArea11LedTitle"]){
            guanledtitleAction=[xmlContent attribute:@"Action"];
        }
        //取得开投影的Action
        if([contents_ele isEqualToString:@"OnArea11PC"]){
            kaipcAction=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关投影的 Action
        if([contents_ele isEqualToString:@"OffArea11PC"]){
            guanpcAction=[xmlContent attribute:@"Action"];
        }
        if([contents_ele isEqualToString:@"OnArea11ElectricDoor1"]){
            kaidiandongmen1Action=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关投影的 Action
        if([contents_ele isEqualToString:@"OffArea11ElectricDoor1"]){
            guandiandongmen1Action=[xmlContent attribute:@"Action"];
        }
        //取得开投影的Action
        if([contents_ele isEqualToString:@"OnArea11ElectricDoor2"]){
            kaidiandongmen2Action=[xmlContent attribute:@"Action"]; //取得开灯Action
        };
        //取得关投影的 Action
        if([contents_ele isEqualToString:@"OffArea11ElectricDoor2"]){
            guandiandongmen2Action=[xmlContent attribute:@"Action"];
        }
        if ([contents_ele rangeOfString:@"Area11Point1"].length>0) {
            
            NSString*title=[xmlContent attribute:@"Title"];
            NSString*urlaction=[xmlContent attribute:@"Action"];
            NSString*name=[xmlContent attribute:@"Name"];
            
            NSDictionary *Dict=[NSDictionary dictionaryWithObjectsAndKeys:name,@"Name",title, @"Title",urlaction, @"Action",nil];
            [self.allArray addObject:Dict];
        }
        if ([contents_ele rangeOfString:@"Area11Point2"].length>0) {
            
            NSString*title=[xmlContent attribute:@"Title"];
            NSString*urlaction=[xmlContent attribute:@"Action"];
            NSString*name=[xmlContent attribute:@"Name"];
            
            NSDictionary *Dict=[NSDictionary dictionaryWithObjectsAndKeys:name,@"Name",title, @"Title",urlaction, @"Action",nil];
            [self.allArray2 addObject:Dict];
        }
        if ([contents_ele rangeOfString:@"Area11Point3"].length>0) {
            
            NSString*title=[xmlContent attribute:@"Title"];
            NSString*urlaction=[xmlContent attribute:@"Action"];
            NSString*name=[xmlContent attribute:@"Name"];
            
            NSDictionary *Dict=[NSDictionary dictionaryWithObjectsAndKeys:name,@"Name",title, @"Title",urlaction, @"Action",nil];
            [self.allArray3 addObject:Dict];
        }
        if ([contents_ele rangeOfString:@"Area11Point1Content"].length>0) {
            NSMutableString *mstr = [[NSMutableString alloc] initWithString:contents_ele];
            [mstr deleteCharactersInRange:NSMakeRange(0, 19)];
            if (mstr.length==1) {
                NSString*title=[xmlContent attribute:@"Title"];
                NSString*urlaction=[xmlContent attribute:@"Action"];
                NSString*name=[xmlContent attribute:@"Name"];
                
                NSDictionary *Dict=[NSDictionary dictionaryWithObjectsAndKeys:name,@"Name",title, @"Title",urlaction, @"Action",nil];
                [self.yijiArray addObject:Dict];
            }
        }
        if ([contents_ele rangeOfString:@"Area11Point2Content"].length>0) {
            NSMutableString *mstr = [[NSMutableString alloc] initWithString:contents_ele];
            [mstr deleteCharactersInRange:NSMakeRange(0, 19)];
            if (mstr.length==1) {
                NSString*title=[xmlContent attribute:@"Title"];
                NSString*urlaction=[xmlContent attribute:@"Action"];
                NSString*name=[xmlContent attribute:@"Name"];
                
                NSDictionary *Dict=[NSDictionary dictionaryWithObjectsAndKeys:name,@"Name",title, @"Title",urlaction, @"Action",nil];
                [self.yijiArray2 addObject:Dict];
            }
        }
        if ([contents_ele rangeOfString:@"Area11Point3Content"].length>0) {
            NSMutableString *mstr = [[NSMutableString alloc] initWithString:contents_ele];
            [mstr deleteCharactersInRange:NSMakeRange(0, 19)];
            if (mstr.length==1) {
                NSString*title=[xmlContent attribute:@"Title"];
                NSString*urlaction=[xmlContent attribute:@"Action"];
                NSString*name=[xmlContent attribute:@"Name"];
                
                NSDictionary *Dict=[NSDictionary dictionaryWithObjectsAndKeys:name,@"Name",title, @"Title",urlaction, @"Action",nil];
                [self.yijiArray3 addObject:Dict];
            }
        }
    }];
    
    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值