這篇主要總結(jié)在iOS開發(fā)中xml/JSON數(shù)據(jù)解析過程用到的方法。XML數(shù)據(jù)解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON數(shù)據(jù)解析主要使用NSJSONSerialization。
NSXMLParser是iOS原生的XML解析方式,采用SAX方式進(jìn)行解析,特點是解析的時候從根元素開始,按順序依次對每一個元素進(jìn)行解析。
以下圖所示XML文檔為例進(jìn)行解析
(1)首先是實例化一個NSXMLParser,設(shè)置代理監(jiān)聽解析過程,開始解析
(2)通過NSXMLParser代理方法對XML文檔進(jìn)行解析
(3)解析效果
GDataXML是谷歌制作的一個解析XML數(shù)據(jù)的類庫,基于libxml2,特點是以DOM方式解析,會把XML文檔數(shù)據(jù)一次性加載到內(nèi)存中,再對數(shù)據(jù)進(jìn)行解析。
下載地址:https://github.com/neonichu/GDataXML
還是使用上一節(jié)用到的XML文檔為例,使用前需要進(jìn)行配置
(1)設(shè)置頭文件路徑
(2)設(shè)置鏈接參數(shù)
(3)設(shè)置編譯參數(shù)(GDataXML是非arc的)
加載整個XML文檔,對元素進(jìn)行遍歷解析即可
JSON數(shù)據(jù)格式有如下要求,故得到數(shù)據(jù)后進(jìn)行對應(yīng)解析即可,在開發(fā)中常用的是將JSON解析為Foundation對象
拿到JSON數(shù)據(jù)直接使用NSJSONSerialization解析即可
對于JSON字符串最外層既不是NSArray也不是NSDictionary時,option選擇NSJSONReadingAllowFragments即可
新聞熱點
疑難解答