XML-SAX解析(大小文件都可以)

写在开头, 着急的小伙伴可以直接从干货开始看起

服务器返回的数据一般为JSON, 这个我们都很了解,相信不用我介绍,很多小伙伴就能说出方法来了, 但是有些公司也提供XML格式的数据

当有一天忽然碰到了这种格式的数据时,也不要懵逼, 我这里有XML的基本解析方法和讲解,这里主要通过大文件解析和小文件解析两篇文章来进行讲解

当然了,本篇是从大文件开始,因为这个相对来说也比较重要,小伙伴也看到文章标题了,因为他大小文件都可以解析

下面上干货

  • 1、从网络获取数据
 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/video?type=XML"];
  • 1.1、设置请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
  • 2、发送请求, 注释和讲解也在其中
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * __nullable response, NSData * __nullable data, NSError * __nullable connectionError) {
        // 1. 创建解析者对象
        NSXMLParser *paser = [[NSXMLParser alloc] initWithData:data];
        // 2. 设置代理 // 要遵守代理协议:<NSXMLParserDelegate>
        paser.delegate = self;
        // 3. 开始解析
        [paser parse];
           
    }];
  • 3、系统调用方法部分
    • 1、只要开始解析就会调用这个方法
    - (void)parserDidStartDocument:(nonnull NSXMLParser *)parser
    {
    
    }
  • 2、只要解析完毕就会调用这个方法
        - (void)parserDidEndDocument:(nonnull NSXMLParser *)parser
        {
            // 解析完毕后刷新UI
            [self.tableView reloadData];
        }
    
  • 3、只要一开始解析就会调用这个方法
        - (void)parser:(nonnull NSXMLParser *)parser didStartElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(nonnull NSDictionary<NSString *,NSString *> *)attributeDict
        {
            // XML解析式会包含返回的整体数据的,所以要做判断
            if ([elementName isEqualToString:@"videos"])
            {
                return;
            }
        // 这里就可以做想要做的一些事情, 下面两句代码只是个示例
        CJViedows *video = [CJViedows objectWithKeyValues:attributeDict];
   
            [self.videos addObject:video];
    
        }
  • 4、解析完一个元素就会调用的方法
        - (void)parser:(nonnull NSXMLParser *)parser didEndElement:(nonnull NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName
        {
    
        }
  • 5、如果解析出错的话就会调用的方法
  - (void)parser:(nonnull NSXMLParser *)parser validationErrorOccurred:(nonnull NSError *)validationError
  {

  }

当知道每个方法的意义后就可以在相应的方法中写你想要的代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JSON JSON和XML都是需要解析的 JSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据...
    JonesCxy阅读 1,885评论 2 10
  • XML简单介绍 什么是XMLXML:可扩展标记语言a.语法b.XML文档的三部分(声明、元素和属性)c.其它注意点...
    Mario_ZJ阅读 478评论 0 2
  • JSON解析 JSON简单介绍 JSON是一种轻量级的数据格式,一般用于数据交互。服务器返回给客户端的数据,一般都...
    搁浅的青蛙阅读 1,753评论 0 4
  • 在网络开发中,从服务器获取的二进制数据包括: > html >图片 >视频 >音频 > zip等 除了以上文件格式...
    小番茄阳阳阅读 784评论 0 0
  • XML数据 XML(eXtensible Markup Language),是一种对字符串文件内容进行结构化标记的...
    fever105阅读 545评论 1 1