DOM解析XML文件

时间:2023-03-08 17:34:30
DOM解析XML文件

1.首先把第三方代码拖进工程

GDataXMLNode.h和GDataXMLNode.m这两个文件放进工程里面

2.引入libxml2库文件

DOM解析XML文件

3.将GDataXMLNode.h文件中的这两个东西在工程中设置一下

DOM解析XML文件

DOM解析XML文件

DOM解析XML文件

4.因为我们引入的第三方文件是MRC的文件,所以我们还要设置一下在ARC的工程中添加MRC的文件,实现ARC和MRC混编,找到添加的文件,在后面加上-fno-objc-arc

DOM解析XML文件

5.无需多言,一切尽在代码中

 #import "ViewController.h"
#import "Student.h"
#import "GDataXMLNode.h" @interface ViewController () <NSXMLParserDelegate> /**
* 存储数据的数组
*/
@property (nonatomic, strong) NSMutableArray *dataArray; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} - (IBAction)domParserActionXMLDocument:(id)sender { // 第一步:引入动态库 // 1.获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"StudentInfo_xml.txt" ofType:nil]; // 2.根据路径获取data类型的数据
NSData *data = [NSData dataWithContentsOfFile:path]; // 3.初始化存储数据的数组
self.dataArray = [NSMutableArray array]; // 4.设置DOM解析(创建解析文档)
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options: error:nil]; // 5.获取根节点
GDataXMLElement *rootElement = document.rootElement; // 6.遍历获取相对应的子节点
for (GDataXMLElement *studentElement in rootElement.children) { Student *stu = [[Student alloc] init]; // 遍历子节点的子节点
for (GDataXMLElement *stuElement in studentElement.children) { // 根据标签给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);
} } @end