DOM解析
document object model(文档对象模型)
一次性全部读取
占内存,但对iOS影响很小,但对java影响很大
解析的时候,将文档整体的读入,并将XML结构化成树状,使用时,通过树枝来获取
DOM解析方式比较好的一个实现是Google提供的一个GData,是开源的,他是对libxml.dylib 的封装,也就是说需要导入类库,并且需要修改配置。
1、配置修改(以Xcode7.0为例):
1)添加libxml2.tbd文件
2)单将GData环境从ARC转到MRC;
2、开始解析
注:Message.txt文件见SAX解析
- (void)DomXmlAction{
//模拟从网路上拿到数据
NSString *path = [[NSBundle mainBundle] pathForResource:@"Message" ofType:@"txt"];
NSData *data = [NSData dataWithContentsOfFile:path];
//开始解析
//创建解析对象
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
//拿到根节点
GDataXMLElement *root = doc.rootElement;
//拿到子节点
NSArray *modelArray = root.children;
//初始化Data数组
self.data = [NSMutableArray array];
//遍历数组取到每一个model对应的节点
for (GDataXMLElement *modelEle in modelArray) {
Person *p = [[Person alloc] init];
//获得属性节点数组
NSArray *proArray = modelEle.children;
for (GDataXMLElement *proEle in proArray) {
[p setValue:proEle.stringValue forKey:proEle.name];
}
[self.data addObject:p];
}
//循环打印结果
for (Person *p in self.data) {
NSLog(@"%@--%@", p.name, p.sex);
}
}