• iOS基础


    一、HTML & XML

    HTML 

    是用来描述网页的一种语言

    HTML 指的是超文本标记语言 (Hyper Text Markup Language)

    HTML 不是一种编程语言,而是一种标记语言 (markup language)

    HTML 被设计用来显示数据

    HTML5

    是下一代的 HTML

    增加了用于绘画的 canvas 元素

    用于媒介回放的 video 和 audio 元素等等

    XML 

    XML 是一种标记语言,很类似 HTML

    XML 的设计宗旨是传输和存储数据,而非显示数据

    二、XML & JSON 简介

    JSON

    作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式

    基于JavaScript的一个子集

    易读性略差,编码手写难度大,数据量小

    JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中

    XML

    可扩展标记语言

    用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言

    易读性高,编码手写难度小,数据量大

    三、JSON格式说明

    对象: {} 括起来的内容

    数据结构为 {keyvalue,keyvalue,...}的键值对的结构

    可以反序列化为OC中的NSDictionary

    数组: []括起来的内容

    数据结构为 ["java","javascript","vb",...]

    可以反序列化为OC中的NSArray

    序列化:在传输之前,将对象转换成有序的字符串或者二进制数据流

    反序列化:将接收到的字符串或者二进制数据流转换成对象或者数组,以便程序访问

    四、解析服务器端返回的JSON数据

    作为一种轻量级的数据交换格式,JSON正在逐步取代XML,成为网络数据的通用格式

    iOS 5开始,使用NSJSONSerializationJSON解析

    其他常见的三种JSON解析第三方库:

    SBJson

    JSONKit

    TouchJson

    从性能上来说,NSJSONSerialization最好,JSONKit次之,SBJson使用较为广泛,API简单易用

    JSON是轻量级的数据交换格式,正逐步取代XML,成为通用网络数据格式

    使用类方法JSONObjectWithData:options:error:可以将接收到的JSON数据反序列化为NSArrayNSDictionary等对象

    技巧:

    将加载内容反序列化为JSON后,可以先保存至plist文件,以便后续操作

    由于是网络应用,不要使用UIImage的同步加载方法设置ImageView的内容,否则容易造成应用阻塞,影响用户体验

    加载网络图片使用的第三方框架SDWebImage,官网地址: https://github.com/rs/SDWebImage

    五、NSXMLParser解析方法

    NSXMLParserSAX方法解析

    SAXSimple API for XML

    只能读,不能修改,只能顺序访问,适合解析大型XML,解析速度快

    常应用于处理大量数据的XML,实现异构系统的数据访问,实现跨平台

    从文档的开始通过每一节点移动,定位一个特定的节点

    DOMDocument Object Model

    不仅能读,还能修改,而且能够实现随机访问,缺点是解析速度慢,适合解析小型文档

    一般应用与小型的配置XML,方便操作

    为载入到内存的文档节点建立类型描述,呈现可横向移动、潜在巨大的树型结构

    在内存中生成节点树操作代价昂贵

    六、NSXMLParser解析过程

    1. 创建NSXMLParser实例,并传入从服务器接收的XML数据

    2. 定义解析器代理

    3. 解析器解析

    4. 通过解析代理方法完成XML数据的解析

    七、NSXMLParser解析代理方法

    // 1. 开始解析XML文档

    - (void)parserDidStartDocument:

    // 2. 开始解析某个元素,会遍历整个XML,识别元素节点名称

    - (void)parser:didStartElement:namespaceURI:qualifiedName:attributes:

    // 3. 文本节点,得到文本节点里存储的信息数据,对于大数据可能会接收多次!为了节约内存开销

    - (void)parser:foundCharacters:

    // 4. 结束某个节点,存储从parser:foundCharacters:方法中获取到的信息

    - (void)parser:didEndElement:namespaceURI:qualifiedName:

    注意:在解析过程中,234三个方法会不停的重复执行,直到遍历完成为止

    // 5. 解析XML文档结束

    - (void)parserDidEndDocument:

    // 6. 解析出错

    - (void)parser:parseErrorOccurred:

  • 相关阅读:
    JVM的基础知识
    tmux常用命令
    JAVA基础—方法覆写、多态
    datetime模块
    time()函数
    Packet Tracer 思科模拟器入门教程 之二 交换机的基本配置与管理
    单元测试前篇
    em
    视口
    浮动
  • 原文地址:https://www.cnblogs.com/monicaios/p/3526342.html
Copyright © 2020-2023  润新知