OC-數(shù)據(jù)解析XML(dom)(二)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容