XML解析2(dom):
一次性将整个XML文档加载到内存中,适合较小的文件
#import "ViewController.h"
#import "GDataXMLNode.h"
#import "Message.h"
@interface ViewController ()
- (IBAction)gDataForXML:(UIButton *)sender;
//用来存储解析后的modle数据
@property(nonatomic,strong)NSMutableArray *dataArray;
@end
@implementation ViewController
-(void)gDataForXML:(UIButton *)sender{
//第一步:首先获取解析文件的路径
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"message.txt" ofType:nil];
//第二部:创建接收数据的对象
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
//第三步创建gDataCML解析文档对象,并且获取fileData
GDataXMLDocument *xmlDocunment = [[GDataXMLDocument alloc]initWithData:fileData options:0 error:nil];
//3.1获取根节点,获取子节点
GDataXMLElement *rootElement = xmlDocunment.rootElement;
NSLog(@"%@",rootElement.name);
//给数组初始化
self.dataArray = [NSMutableArray array];
//3.2通过根节点获取下面的子节点
for (GDataXMLElement * childrenElement in rootElement.children) {
//创建model对象,备用
Message *messageModel = [Message new];
//3.3遍历获取到的子节点,将子节点中的属性转换为model模型对象
for (GDataXMLElement *message in childrenElement.children) {
[messageModel setValue:message forKey:message.name];
}//4将模型对象装入数组
[self.dataArray addObject:messageModel];
}
//测试
[self.dataArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@ %@ %@",[obj receiver],[obj sender],[obj content]);
}];
}
//源文件百度云:链接: https://pan.baidu.com/s/1i4LgNEP 密码: v6cy