iOS基礎 - XML & JSON

1、HTML & XML

HTML javascript

是用來描述網頁的一種語言java

HTML 指的是超文本標記語言 (Hyper Text Markup Language)git

HTML 不是一種編程語言,而是一種標記語言 (markup language)github

HTML 被設計用來顯示數據編程

HTML5canvas

是下一代的 HTML數組

增長了用於繪畫的 canvas 元素服務器

用於媒介回放的 video 和 audio 元素等等網絡

XML 數據結構

XML 是一種標記語言,很相似 HTML

XML 的設計宗旨是傳輸和存儲數據,而非顯示數據

2、XML & JSON 簡介

JSON

做爲一種輕量級的數據交換格式,正在逐步取代XML,成爲網絡數據的通用格式

基於JavaScript的一個子集

易讀性略差,編碼手寫難度大,數據量小

JSON格式取代了XML給網絡傳輸帶來了很大的便利,可是卻沒有了XML的一目瞭然,尤爲是JSON數據很長的時候,咱們會陷入繁瑣複雜的數據節點查找中

XML

可擴展標記語言

用於標記電子文件使其具備結構性的標記語言,能夠用來標記數據、定義數據類型,是一種容許用戶對本身的標記語言進行定義的源語言

易讀性高,編碼手寫難度小,數據量大

3、JSON格式說明

對象: {} 括起來的內容

數據結構爲 {keyvalue,keyvalue,...}的鍵值對的結構

能夠反序列化爲OC中的NSDictionary

數組: []括起來的內容

數據結構爲 ["java","javascript","vb",...]

能夠反序列化爲OC中的NSArray

序列化:在傳輸以前,將對象轉換成有序的字符串或者二進制數據流

反序列化:將接收到的字符串或者二進制數據流轉換成對象或者數組,以便程序訪問

4、解析服務器端返回的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

5、NSXMLParser解析方法

NSXMLParserSAX方法解析

SAXSimple API for XML

只能讀,不能修改,只能順序訪問,適合解析大型XML,解析速度快

常應用於處理大量數據的XML,實現異構系統的數據訪問,實現跨平臺

從文檔的開始經過每一節點移動,定位一個特定的節點

DOMDocument Object Model

不只能讀,還能修改,並且可以實現隨機訪問,缺點是解析速度慢,適合解析小型文檔

通常應用與小型的配置XML,方便操做

爲載入到內存的文檔節點創建類型描述,呈現可橫向移動、潛在巨大的樹型結構

在內存中生成節點樹操做代價昂貴

6、NSXMLParser解析過程

1. 建立NSXMLParser實例,並傳入從服務器接收的XML數據

2. 定義解析器代理

3. 解析器解析

4. 經過解析代理方法完成XML數據的解析

7、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:

相關文章
相關標籤/搜索