XML解析2(dom):
一次性將整個XML文檔加載到內(nèi)存中,適合較小的文件
#import "ViewController.h"
#import "GDataXMLNode.h"
#import "Message.h"
@interface ViewController ()
- (IBAction)gDataForXML:(UIButton *)sender;
//用來存儲解析后的modle數(shù)據(jù)
@property(nonatomic,strong)NSMutableArray *dataArray;
@end
@implementation ViewController
-(void)gDataForXML:(UIButton *)sender{
//第一步:首先獲取解析文件的路徑
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"message.txt" ofType:nil];
//第二部:創(chuàng)建接收數(shù)據(jù)的對象
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
//第三步創(chuàng)建gDataCML解析文檔對象,并且獲取fileData
GDataXMLDocument *xmlDocunment = [[GDataXMLDocument alloc]initWithData:fileData options:0 error:nil];
//3.1獲取根節(jié)點(diǎn),獲取子節(jié)點(diǎn)
GDataXMLElement *rootElement = xmlDocunment.rootElement;
NSLog(@"%@",rootElement.name);
//給數(shù)組初始化
self.dataArray = [NSMutableArray array];
//3.2通過根節(jié)點(diǎn)獲取下面的子節(jié)點(diǎn)
for (GDataXMLElement * childrenElement in rootElement.children) {
//創(chuàng)建model對象,備用
Message *messageModel = [Message new];
//3.3遍歷獲取到的子節(jié)點(diǎn),將子節(jié)點(diǎn)中的屬性轉(zhuǎn)換為model模型對象
for (GDataXMLElement *message in childrenElement.children) {
[messageModel setValue:message forKey:message.name];
}//4將模型對象裝入數(shù)組
[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