IOS 使用第三方框架(DOM)解析XML(GDataXML)
来源:互联网 发布:网络编辑是做什么的 编辑:程序博客网 时间:2024/05/20 02:54
DOM解析:一次性加载文档之后再解析.(1.获得 DOM对象 2.获得根元素内容3.遍历根元素的"属性数组"或者"子元素数组"4.层层遍历元素或者属性内容...5.根据节点的 name属性 和 stringValue属性获得对应的值. 6.给数据模型赋值)
使用第三方框架
GDataXML
需要添加动态库 libxml
需要配置一些系统setting
// libxml includes require that the target Header Search Paths contain
//
// /usr/include/libxml2
//
// and Other Linker Flags contain
//
// -lxml2
如果想在ARC 模式下使用,需要把对应的文件 调成可兼容MRC模式
解析带属性的 XML
// 加载网络数据.// urlString :网络接口!-(void)loadServerDataWithUrlString:(NSString *)urlString{ // 1.创建请求 NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 2.发送请求 [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // 一般在网络开发中,必须处理错误机制! if (data && !error) { // 调试 // NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); // XML文档特点: 需要的数据都在 属性中.需要 属性名称和属性内容! // DOM 解析.一次性获得整个 XML 文档, 利用 DOM 操作整个XML节点! [self domTestWithData:data]; // 注意: 数据解析结束之后,记得刷新数据源! dispatch_async(dispatch_get_main_queue(), ^{ [self reloadData]; }); }else { NSLog(@"网络连接错误..."); } }] resume]; }// DOM解析- (void)domTestWithData:(NSData *)data{ // 1.获得 DOM 对象! GDataXMLDocument *dom = [[GDataXMLDocument alloc] initWithData:data options:0 error:NULL]; // 2.利用 dom 对象操纵 XML 节点! // 利用 DOM 对象获得需要的文档内容!---> 根元素内容! GDataXMLElement *rootElement = dom.rootElement; // NSLog(@"%@",rootElement); // 每一个元素都有属性内容和元素内容:(1.自己的元素内容, 2.子元素) // NSLog(@"元素内容:%@ 元素属性内容:%@",rootElement.children,rootElement.attributes); // 遍历根元素的子元素,取出对应的子元素 vedio 元素 [rootElement.children enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { GDataXMLElement *vedioElement = obj; // NSLog(@"%@",vedioElement.attributes); // 根据 XML 文档特点,选择取出属性内容(属性值)还是元素内容(子元素)! // 遍历 vedio 元素的属性数组,取出每一个属性的值. [vedioElement.attributes enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // GDataXMLNode *node = obj; // node.name :属性 key node.stringValue :属性 value NSLog(@"%@ %@",node.name,node.stringValue); }]; }];}
解析不带属性的 嵌套XML
// DOM解析- (void)domTestWithData:(NSData *)data{ // 1. 获得 dom 对象 GDataXMLDocument *dom = [[GDataXMLDocument alloc] initWithData:data options:0 error:NULL]; // 2. 获得根元素的内容 GDataXMLElement *rootElement = dom.rootElement; // 遍历根元素的子元素,获得的是 vedio 元素. [rootElement.children enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // GDataXMLElement *vedioElement = obj; CZVideo *video = [[CZVideo alloc] init]; // NSLog(@"%@",vedioElement); // 遍历vedio元素的子元素,获得元素内容! [vedioElement.children enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { GDataXMLElement *element = obj; NSLog(@"%@ %@",element.name ,element.stringValue); // 赋值 [video setValue:element.stringValue forKey:element.name]; }]; [self.videos addObject:video]; }]; }
0 0
- IOS 使用第三方框架(DOM)解析XML(GDataXML)
- XML解析之DOM解析——利用第三方框架GDataXML进行XML解析,以及保存代码块的技巧
- iOS:使用第三方DOM解析XML文件
- 使用第三方DOM解析XML文件
- 使用第三方DOM解析XML格式文件
- IOS GDataXML 解析xml
- IOS XML解析之GDataXML
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- IOS学习笔记27—使用GDataXML解析XML文档
- iOS 获取xml文档并解析(使用GDataXML)
- IOS学习笔记27—使用GDataXML解析XML文档
- Jsoup消除不受信任的HTML (来防止XSS攻击)
- Ubuntu命令学习(一)
- Python学习笔记--类和对象
- [IMX6Q][Android5.1]androidboot.xxx如何转换成ro.boot.xxx
- 队列(顺序存储)
- IOS 使用第三方框架(DOM)解析XML(GDataXML)
- 【木头Cocos2d-x 032】我是定时器(第01章)—我爱单线程之schedule介绍
- Android和Linux动态加载机制及PLT/GOT作用介绍
- 解决服务器从url上下载中文名字文件失败的问题
- 家具海报创意(收集)
- oracle instr函数 判断字段中是否有换行符
- 模拟-兰顿蚂蚁-水
- Android开发中Handler的经典总结
- Cocos2d-X3.0版的HelloWorld工程分析