iOS學習筆記(九) xml資料解析

2021-08-27 12:57:40 字數 2549 閱讀 2813

在iphone開發中,xml的解析有很多選擇,ios sdk提供了nsxmlparser和libxml2兩個類庫,另外還有很多第三方類庫可選,例如tbxml、touchxml、kissxml、tinyxml和gdataxml。這篇文章使用了nsxmlparser。

解析 xml 通常有兩種方式,dom 和 sax:

nsxmlparser是基於sax的解析方式。

nsxmlparser採用了委託設計模式,因此他的實現類需要採用協議並支援委託。

nsxmlparser解析xml需要委託nsxmlparserdelegate實現。

1、初始化nsxmlparser

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

initwithcontentsofurl 通過nsurl建立解析器

initwithdata 通過nsdata建立解析器

setdelegate 為解析器定義委託

parse 執行解析器

nsxmlparser *parser=[[nsxmlparser alloc] initwithdata:[xml datausingencoding:nsutf8stringencoding]];

// nsxmlparser *parser=[[nsxmlparser alloc] initwithcontentsofurl:[nsurl urlwithstring:@""]];

[parser setdelegate:self];//設定nsxmlparser物件的解析方法**

[parser setshouldprocessnamespaces:no];

[parser parse];//開始解析

2、委託方法

主要使用一下委託方法:

//發現元素開始符的處理函式  (即報告元素的開始以及元素的屬性) 

- (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

執行[parser parse]後會依序執行:

1、didstartelement 2、

foundcharacters 3、

didendelement

示例如下:

-(void)parser:(nsxmlparser *)parser didstartelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname attributes:(nsdictionary *)attributedict 

}if(itemvalue!=nil)

itemvalue=[[nsmutablestring alloc] init];

if ( [elementname isequaltostring:@"phone"] )

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

- (void)parser:(nsxmlparser *)parser didendelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname

if ( [elementname isequaltostring:@"person"] )

}

/**

* @author 張興業

* * ios入門群:83702688

* android開發高階群:241395671

*/

參考:

iOS學習筆記 xml資料解析

在iphone開發中,xml的解析有很多選擇,ios sdk提供了nsxmlparser和libxml2兩個類庫,另外還有很多第三方類庫可選,例如tbxml touchxml kissxml tinyxml和gdataxml。這篇文章使用了nsxmlparser。解析 xml 通常有兩種方式,dom...

IOS(一)XML資料解析

解析 xml 通常有兩種方式,dom 和 sax xml的資料格式 第一種 屬性在字典 data 中儲存 第二種 屬性在兩個尖括號中間1 王百惠女 110 xml解析之sax解析 sax解析是通過nsxmlparser解析的解析方式。nsxmlparser採用了委託設計模式,因此他的實現類需要採用協...

iOS之資料解析之XML解析

xml解析常見的兩種方式 dom解析和sax解析 dom解析 解析 如下 void xmldommethed nslog self sourcearray 寫入 如下 通過dom解析方式為xml增加節點 sax只可以讀取,不可以新增 void domaddnote sax解析 遵循協議 inte c...