XML的解析方式有2种
(3)SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件
XML解析方式的选择建议:
大文件:NSXMLParser(系统的解析sax)、libxml2
GDataXMLNode 框架解析
// responseObject就是需要解析的XML二进制数据
[self GetXMLDataWithData:responseObject];
// DOM解析XML数据!
- (void)GetXMLDataWithData:(NSData*)data
{
// DOM解析:根据元素层级,一层一层的往下面取!
//需要的数据只能存放在属性内容/或者子元素中!
//遍历每一个元素的属性数组/子元素数组...
//遍历完毕之后,通过node.name node.stringvalue来获得想要的值!
// 1.得到整个XML文档!
GDataXMLDocument*dom = [[GDataXMLDocumentalloc]initWithData:dataoptions:0error:NULL];
NSLog(@"%@",dom);
// 2.通过XML文档,得到根元素中的内容
GDataXMLElement*rootElement = dom.rootElement;
// 3.如果元素有属性内容: rootElement.attributes;子元素:rootElement.children
//遍历根元素的所有子元素!
[rootElement.children enumerateObjectsUsingBlock:^( id obj, NSUInteger idx,BOOL*stop) {
//
GDataXMLElement*vedio Element = obj;
//有多少个vedio元素就创建多少个模型!
ITObjc*xml = [[ITObjc alloc]init];
//遍历vedio元素中的属性
[vedioElement.attributes enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL*stop) {
//
// NSLog(@"%@",obj);
//节点/标签/属性
GDataXMLNode*node = obj;
NSLog(@"%@,%@",node.name,node.stringValue);
//给数据模型赋值
[videosetValue:node.stringValueforKey:node.name];
}];
//将数据模型添加到数组源中
[self.xml addObject:xml];
}];