DOM简介
DOM
: Document Object ModelDOM
: 文档对象模型 (文档树
模型)- 一次性把
XML
文件全部加载到内存,内存消耗大,适合读写比较小的XML
文件. - 之前的
SAX
方式只能读取XML
文件,但是DOM
方式可以修改XML
文件,包括添加删除修改节点. - iOS系统默认不支持DOM解析,在iOS系统下解析DOM的话需要第三方框架.
- 第三方框架 : GData/KissXML(XMPP中使用此框架)
GData中类的关系分析
集成GData框架
- 导入
GDataXMLNode
第三方文件. - 解决GData的报错.
GData解析XML的步骤
1.获取XML文档.
2.获取XML文档的根标签.
3.遍历根标签,获取根标签的子标签(video标签),创建video标签对应的模型对象.
4.遍历video标签,获取video标签的子标签,给模型对象的属性赋值.
5.遍历video标签,获取video标签的属性,给模型对象的videoId属性赋值.
GData解析XML的实现
- 模型类没有变化,还是SAX方式解析的那个模型类.
- 从网络中获取到XML文件的二进制数据.
- 代码实现 :
- (void)DOM:(NSData *)data
{
GDataXMLDocument *XMLDocument = [[GDataXMLDocument alloc] initWithData:data error:NULL];
GDataXMLElement *rootElement = XMLDocument.rootElement;
NSMutableArray *videoM = [NSMutableArray array];
for (GDataXMLElement *videoElement in rootElement.children) {
VideoModel *video = [[VideoModel alloc] init];
[videoM addObject:video];
for (GDataXMLElement *subElement in videoElement.children) {
[video setValue:subElement.stringValue forKey:subElement.name];
}
NSLog(@"%@",[videoElement.attributes class]);
for (GDataXMLNode *K
in videoElement.attributes) {
[video setValue:attr.stringValue forKey:attr.name];
}
}
NSLog(@"%@",videoM);
}