ios中如何解析xml檔案

2021-06-26 05:18:30 字數 3511 閱讀 3065

ios中如何解析xml檔案

兩種方法:1.ios中已有的nsxmlparse類

2.google的gdataxml也是基於libxml2的,因此在使用gdataxml之前,你需要先

匯入libxml2。

這裡詳解ios中的nsxmlparse:

nsxmlparser 實現的是sax方法解析xml檔案。

dom實現的原理是把整個xml

文件一次性讀出,放在乙個樹型結構裡。在需要的時候,查詢特定節點,然後對節點進行讀或寫。他的主要優勢是實現簡單,讀寫平衡;缺點是比較佔記憶體,因為他要把整個xml

文件都讀入記憶體,檔案越大,這種缺點就越明顯。

sax的實現方法和dom

不同。他只在

xml文件中查詢特定條件的內容,並且只提取需要的內容。這樣做占用記憶體小,靈活,正好滿足我們的需求。他的缺點就是寫,有些資料介紹了寫入的方法,但是我感覺這對本例沒有必要。

執行nsxmlparser

涉及設定、執行和響應結果。

1啟動nsxmlparser

要使用nsxmlparser

要先建立它,設定各種屬性,主要用到以下幾個方法:

initwithcontentsofurl  通

過nsurl建立解析器

initwithdata                 通

過nsdata建立解析器

setdelegate                  為解析器定義委託

parse                           執行解析器

2)充當委託

最重要的5個方法:

//發現元素開始符的處理函式

(即報告元素的開始以及元素的屬性)

- (void)parser:(nsxmlparser *)parser 

didstartelement:(nsstring *)elementname 

namespaceuri:(nsstring *)namespaceuri 

qualifiedname:(nsstring *)qname 

attributes:(nsdictionary *)attributedict

//處理標籤包含內容字元

(報告元素的所有或部分內容)

- (void)parser:(nsxmlparser *)parser foundcharacters:(nsstring *)string

//發現元素結束符的處理函式,儲存元素各專案資料(即報告元素的結束標記)

- (void)parser:(nsxmlparser *)parser 

didendelement:(nsstring *)elementname 

namespaceuri:(nsstring *)namespaceuri 

qualifiedname:(nsstring *)qname

//報告解析的結束

- (void)parserdidenddocument:(nsxmlparser *)parser

//報告不可恢復的解析錯誤

- (void)paser:parsererroroccured

1.申明了乙個xml處理協議,用到nsxmlparser協議,用來具體處理我們要解析的xml檔案,把需要的url取出來,存到指定的data裡。*/

//多執行緒處理類的定義,方法實現,與向主線程回傳data

@class

//@protocol parseoperationdelegate;

@protocol parseoperationdelegate

- (void)parseerroroccurred:(nserror *)error;

@end

@inte***ce parseoperation : nsoperation

- (id)initwithdata:(nsdata *)data delegate:(id

)thedelegate;

@end

然後完成協議的初始化函式

- (id)initwithdata:(nsdata *)data delegate:(id

)thedelegate

returnself; }

2.完成特定標籤的解析

#pragma mark -

#pragma mark rss processing

- (void)parser:(nsxmlparser *)parser didstartelement:(nsstring *)elementname

namespaceuri:(nsstring *)namespaceuri

qualifiedname:(nsstring *)qname

attributes:(nsdictionary *)attributedict

storingcharacterdata= [elementstoparse

containsobject

:elementname]; }

3.找到具體的位址與內容,並存

- (void)parser:(nsxmlparser *)parser didendelement:(nsstring *)elementname

namespaceuri:(nsstring *)namespaceuri

qualifiedname:(nsstring *)qname

else

if ([elementname isequaltostring:knamestr])

else

if ([elementname isequaltostring:kimagestr])

else

if ([elementname isequaltostring:kartiststr])

}else

if ([elementname isequaltostring:kentrystr])}}

- (void)parser:(nsxmlparser *)parser foundcharacters:(nsstring *)string

}

最後,關於ggxml解析,我沒有接觸到,可能會在以後不上來,謝謝

iOS中xml檔案解析

xml檔案內容 id 1 jackname 2015personid 20age person id 2 rosename 2016personid 18age person id 3 tomname 2017personid 19age person id 4 jerryname 2018pers...

如何解析rdb檔案

相信大家也都或多或少的了解些redis,知道他是記憶體性nosql資料庫。那麼,疑問也就來了,這種記憶體型資料庫的資料在伺服器宕機後,資料還會恢復嗎?答案是會恢復的!因為這種記憶體型資料庫也存在它的持久化機制,下面是redis的rdb 持久化觸發條件 其含義如下 900秒內如果至少有1個key的值變...

vue如何解析xml檔案 x2js

好久沒來寫東西了,主要是一直在加班,哼哼,不開心 專案中會用到將xml檔案解析成json檔案在頁面中顯示出來,以前jq的時候用到的方法行不通了,故在這邊介紹一種我覺得還不錯的外掛程式 1.npm安裝 npm i x2js 2.在main.js中引用 import x2js from x2js xml...