DOM解析XML文件
第一步:引入动态库:
1.libxml2.rbd
2.引入第三方文件:<GDataXMLNode.h/.m> 注:博客文件中已上传第三方文件(有需要可以查找下载)
2.1.根据Header Search Paths 添加 /usr/include/libxml2
2.2.根据Other Linker Flags 添加 -lxml2
2.3非ARC程序在ARC程序中运行需添加如下代码: -fno-objc-arc
#pragma mark - DOM解析XML文件
- (IBAction)domParserActionXMLDocument:(id)sender {
// 第一步: 引入动态库
// 1.获取文件的路径
NSString *filePath =[[NSBundle mainBundle] pathForResource:@"StudentInfor_xml" ofType:@"txt"];
// 2.根据路径获取data类型的数据
NSData *data = [NSData dataWithContentsOfFile:filePath];
//NSLog(@"data = %@", data);
// 2.5初始化存储数据的数组
self.dataArray = [NSMutableArray array];
// 3.设置DOM解析 (创建解析文档)
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
// 4.获取分节点
GDataXMLElement *rootElement = document.rootElement;
// 5.遍历获取相对应的子节点
for (GDataXMLElement *studentElement in rootElement.children) {
Student *stu = [[Student alloc] init];
// 遍历子节点的子节点
for (GDataXMLElement *stuElement in studentElement.children) {
NSLog(@"stuElement = %@", stuElement);
// 根据标签给student对象赋值
// stuElement.name 标签的名字
// stuElement.stringValue标签的值
// kvc赋值
[stu setValue:stuElement.stringValue forKey:stuElement.name];
}
[self.dataArray addObject:stu];
}
// 遍历检验
for (Student *stu in self.dataArray) {
NSLog(@"name = %@, gender = %@, age = %ld, hobby = %@", stu.name,stu.gender,stu.age,stu.hobby);
}
}