DOM 是谷歌封装的XML 解析第三方 需要导入
GDataXMLNode.h 和 GDataXMLNode.m
写在本地的XML 文件的内容
引入.h 属性里面创建名为 dataArray 的可变数组
//[NSBundle mainBundle] 代表的是左面那个文件夹
//pathForResource:@"文件名" ofType:@"文件格式"
NSString *path = [[NSBundle mainBundle]pathForResource:@"XML_stu" ofType:@"txt"];
//通过文件路径,创建一个NSData对象
NSData *data = [NSData dataWithContentsOfFile:path];
//初始化可变数组
_dataArray = [NSMutableArray array];
NSError *error = nil;
// GDataXMLDocument XML 的DOM解析使用类
// 第一个参数 解析的data对象
// 第二个参数 一般就是0
// 第三个参数 error 信息
GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithData:data options:0 error:&error];
//获取到XML数据根节点
//获取到跟节点里面所有的数据,也就是说 获取到students里面包含的所有的东西
GDataXMLElement *rootElement = [document rootElement];
// NSLog(@"%@",rootElement);
for (GDataXMLElement *subElement in rootElement.children) {
//这里获取到的subElement保存的是student 标签里面的内容,所以在这里创建对象
Student *student = [Student new];
for(GDataXMLElement *element in subElement.children){
// element 保存的就是 student标签的所有子标签
// 根据标签的名字,给属性赋值
// element.name 表示标签名字
// element.stringValue 表示标签的值
// tu.name,stu.gender,stu.hobby,stu.age);
// 判断名字
if ([element.name isEqualToString:@"name"]){
student.name = element.stringValue;
}else if ([element.name isEqualToString:@"hobby"]){
student.hobby = element.stringValue;
}else if ([element.name isEqualToString:@"gender"]){
student.gender = element.stringValue;
}else if ([element.name isEqualToString:@"age"]){
student.age = [element.stringValue integerValue];
}
}
[self.dataArray addObject:student];
}for (Student *stu in self.dataArray) {
NSLog(@"%@ %@ %@ %ld", stu.name, stu.hobby, stu.gender, stu.age);
}