本片文章我們來介紹xml文件的另一種解析方法dom解析,先讀取完整的xml文檔,然后在內(nèi)存中形成數(shù)的結(jié)構(gòu),在根據(jù)節(jié)點關(guān)系去獲取數(shù)據(jù),這里我們使用google提供的第三方類GDataXMLNode來解析,速度要比NSXMLParser的快.
首先把GDataXMLNode的兩個文件拖入到我們的工程里去.
屏幕快照 2016-02-07 下午1.58.08.png
GDataXMLNode需要先配置一下,方法請參考http://www.reibang.com/p/7404ea214f43
配置完后我們就可以解析了
第一步:獲取路徑,轉(zhuǎn)換data對象
NSString *string = [[NSBundle mainBundle]pathForResource:
@"person" ofType:@"txt"];
NSData *data = [NSData dataWithContentsOfFile:string];
第二步:創(chuàng)建文檔對象,此時文檔里面存放的是樹狀結(jié)構(gòu)的數(shù)據(jù),并創(chuàng)建error對象
NSError *error;
GDataXMLDocument *doucument = [[GDataXMLDocument
alloc]initWithData:data options:0 error:&error];
獲取文檔的根節(jié)點
GDataXMLElement *rootElement = doucument.rootElement;
給目標數(shù)組開辟空間
self.dataArray = [NSMutableArray arrayWithCapacity:3];
解析
for (GDataXMLElement *subElement in rootElement.children) {
Student *student = [Student new];
for (GDataXMLElement *contentElement in subElement.children) {
[student setValue:contentElement.stringValue
forKey:contentElement.name];
}
[_dataArray addObject:student];
}
```
打印 驗證結(jié)果
for (Student *stu in _dataArray) {
NSLog(@"%@",stu);
}