3 一般 XML 文檔 (XML Document)
4 舉例 :
<student> 【標簽,表示開始】
<name>你</name>
<hobby>女</hobby>
</student> 【標簽,表示結束】
5 XML 文檔的語法:
5.1 文檔聲明:在 XML 文檔最前面,必須寫一個文檔聲明
a 最簡單的聲明 :<?xml version = "1.0"?>
b 用encoding 屬性,來說明文檔字符編碼:<?xml version = "1.0" encoding = "UTF-8"?>
5.2 元素(Element):一個元素,會包含一個開始標簽和一個結束標簽
a 有所有內容:<name>你</name>
b 無元素內容:<name></name>
而且一個元素可嵌套若干個子元素,但不能出現交叉嵌套
<students>
<student> 【標簽,表示開始】
<name>你</name>
<hobby>女</hobby>
</student> 【標簽,表示結束】
<stdudents>
** 注意 : 1 規范的 XML 文檔最多只有一個根元素,其他的都是根元素的子孫元素。
2 在 XML 中,空格和換行,都會被當做具體內容去處理,例如: a和b 是不一樣的
a <name>你</name>
b <name>
你
</name>
5.3 屬性(Atribute):一個元素可以擁有多個屬性,例如
<video name="小黃人" hobby="apple"/>【video 元素擁有 name,hobby兩個屬性】
*注意 : 屬性的值必須用 "" 或者 '' 括住
*屬性表示的信息,也可用子元素來表示,例如:
<video>
<name>小黃人</name>
<hobby>apple</hobby>
</video>
6 對 XML 文檔的解析:
提取 name 元素里面的內容:<name>小黃人</name>
或者是提取 video 元素中 name 和 hobby 的值 :<video name="小黃人" hobby="apple"/>
7 --- SAX 解析 ---- Simple API for XML
SAX: 基於事件驅動的解析方式,逐行解析數據(采用協議回調機制)
<student>
<name> 你</name>
<hobby>女</hobby>
</student>
</students>
a 解析方式,逐行進行解析。
a.1 打開 XML 文檔
a.2 開始節點(開始標簽)
a.3 逐行進行解析
a.4 發現元素里面的內容
a.5 提取內容
a.6 結束節點(結束標簽)
a.7 循環開始,直到遇到 根元素的結束標簽,解析才徹底結束
b.1 蘋果原生: NSXMLParser -- SAX 方式解析,使用簡單
b.2 第三方框架:
b JSON 中的方括號 [], 在OC 中表示 NSArray
1> XML
優點:\u2028
-
格式統一, 符合標准\u2028
-
容易與其他系統進行遠程交互, 數據共享比較方便
\u2028 缺點:
-
XML文件格式文件龐大, 格式復雜, 傳輸占用帶寬\u2028
-
服務器端和客戶端都需要花費大量代碼來解析XML, 不論服務器端和客戶端代碼變的異常復雜和不容易維護
-
客戶端不同,瀏覽器之間解析XML的方式不一致, 需要重復編寫很多代碼\u2028
-
服務器端 和 客戶端 解析XML花費資源和時間
2> JSON
優點:\u2028
-
數據格式比較簡單, 易於讀寫, 格式都是壓縮的, 占用帶寬小\u2028
-
易於解析這種語言
-
支持多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等語言服務器端語言, 便於服務器端的解析\u2028
-
因為JSON格式能夠直接為服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發量, 但是完成的任務不變, 且易於維護\u2028
缺點:\u2028
-
沒有XML格式這么推廣的深入人心和使用廣泛, 沒有XML那么通用性\u2028
-
JSON格式目前在Web Service中推廣還屬於初級階段
2.JSON、XML解析方式的底層實現
1> XML
Xml兩種解析方式,DOM 和 SAX。
DOM 需要讀入整個XML文檔(文檔驅動),SAX 是事件驅動的,並不需要讀入整個文檔,文檔的讀入過程也就是SAX的解析過程。
SAX 簡單地說就是對XML文檔進行順序掃描,當掃描到 文檔 的 開始 與 結束 ,元素(element)的 開始 與 結束 時,就會觸發相應的事件處理 函數,由事件處理函數做相應的動作,處理完后繼續掃描,直到文檔結束,則解析完畢
DOM 解析XML文件時,會將XML文件的所有內容讀取到內存中,然后允許你使用 DOM API 操作 XML 樹。也就是說,DOM 會把XML以 樹 的形式讀取到內存中,然后在通過相應的 API 來操作這個 XML樹,從而達到解析XML文件的目的
2> JSON
json底層原理 遍歷字符串中的字符,最終根據特助字符,比如{},[],:號等進行區分,{}是字典,[]表示的是數組,:號是字典的鍵和值的分水嶺,最后是將json數據轉化為字典,然后使用 KVC 將字典轉為 model
1)對於復雜的數據結構使用XML,簡單的數據結構可采用JSON。
2)在互聯網應用中數據傳輸中,提倡使用JSON。