一、sax 解析方法
解析xml方式1::NSXMLParser(系统类),
1:创建文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Untitled" ofType:@"xml"];
NSURL *url = [[NSURL alloc]initFileURLWithPath:filePath];
// 创建解析类
NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
// 设置代理
parser.delegate = self;
[parser parse];
<pre name="code" class="objc">//遇到开始标签
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary<NSString *, NSString *> *)attributeDict{
if ([elementName isEqualToString:@"ROW"]) {
self.city = [[CityModel alloc]init];
}
NSLog(@"遇到开始标签:%@",elementName);
}
//结束标签
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName{
if ([elementName isEqualToString:@"AREAID"]) {
self.city.areaID =self.string;
}else if([elementName isEqualToString:@"NAMEEN"]){
self.city.nameen = self.string;
}else if ([elementName isEqualToString:@"NAMECN"]){
self.city.namecn = self.string;
}else if ([elementName isEqualToString:@"DISTRICTEN"]){
self.city.districten = self.string;
}else if ([elementName isEqualToString:@"DISTRICTCN"]){
self.city.districtcn = self.string;
}else if ([elementName isEqualToString:@"PROVEN"]){
self.city.proven = self.string;
}else if ([elementName isEqualToString:@"PROVCN"]){
self.city.provcn = self.string;
}else if ([elementName isEqualToString:@"NATIONEN"]){
self.city.nationen = self.string;
}else if ([elementName isEqualToString:@"NATIONCN"]){
self.city.nationcn = self.string;
}else if ([elementName isEqualToString:@"ROW"]){
// 添加进数组
[self.array addObject:self.city];
}
NSLog(@"遇到开始标签:%@",elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"字符串:%@",string);
self.string = string;
}
二、dom解析
1、文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Untitled" ofType:@"xml"];
NSError *error;
2.写入
NSString *content = [[NSString alloc]initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
// NSLog(@"%@",content);
}else{
// NSLog(@"%@",error);
return;
}
3.初始化
GDataXMLDocument *docment = [[GDataXMLDocument alloc]initWithXMLString:content options:0 error:nil];
// 获取到根节点
GDataXMLElement *rootElement = [docment rootElement];
// 查找子节点
NSArray *arrayElements = [rootElement elementsForName:@"ROW"];
self.array = [NSMutableArray array];
// NSLog(@"%@",arrayElements);
for (GDataXMLElement *element in arrayElements) {
// 创建模型
self.city = [[CityModel alloc]init];
// 根据节点查找对应值
self.city.areaID =[[[element elementsForName:@"AREAID"] lastObject] stringValue];
self.city.namecn =[[[element elementsForName:@"NAMEEN"] lastObject] stringValue];
self.city.nameen =[[[element elementsForName:@"NAMECN"] lastObject] stringValue];
self.city.districten =[[[element elementsForName:@"DISTRICTEN"] lastObject] stringValue];
self.city.districtcn =[[[element elementsForName:@"DISTRICTCN"] lastObject] stringValue];
self.city.proven =[[[element elementsForName:@"PROVEN"] lastObject] stringValue];
self.city.provcn =[[[element elementsForName:@"PROVCN"] lastObject] stringValue];
self.city.nationen =[[[element elementsForName:@"NATIONEN"] lastObject] stringValue];
self.city.nationcn =[[[element elementsForName:@"NATIONCN"] lastObject] stringValue];
self.city.areaID =[[[element elementsForName:@"AREAID"] lastObject] stringValue];
self.city.areaID =[[[element elementsForName:@"AREAID"] lastObject] stringValue];
// 添加进数组
[self.array addObject:self.city];
}
NSLog(@"%@",self.array);
}
下面是 GDataXMLDocument 的配置方法
1.引入库文件