现在来写一篇我最近使用过的一种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];
}
}
}];
}