iOS學習筆記之網絡篇數據解析(JSON/XML)

// 當前最常見的網絡數據有兩種,JSON、XML
// 解析數據的方式也有兩種
1> DOM 一口悶,直接把得到的數據一次性加載到內存,然後開始解析(適合小文檔)
2> SAX 細嚼慢嚥,一口一口吃,一個一個子節點開始解析,解析完這個節點再解析下一個。(適合大文檔)


iOS常見的解析有:
1> NSXMLParser (蘋果官方自帶的)使用SAX方式解析
1.創建NSXMLParser對象--parser
2.設置代理 parser.delegate = self;
// 實現代理方法
#pragma mark - XML代理方法
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
{
    // 如果是根節點(元素), 直接返回
    if ([elementName isEqualToString:@"videos"]) return;
    // 來到這裏說明是子節點“video”
    // 利用MVC模式賦值
    Video *video = [Video videoWithDict:attributeDict];
    [self.videos addObject:video];
    
}


3.開始解析
[parser parser];




2> GDataXMLDocument (Google寫的)使用DOM方式解析--推薦使用
1. 獲取這個文檔
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
2. 獲得文檔的根節點
 GDataXMLElement *element = [document rootElement];
3. 獲取根元素裏面的所有子元素
 NSArray *arrayVideos = [element elementsForName:@"video"];
4. 遍歷數組,給模型的屬性賦值


3> NSJSONSerialization (蘋果自帶的) 使用與JSONS數據解析
1. 通過NSJSONSerialization類方法獲取根節點數據的字典
[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
2. 根據字典獲取數組
3.  遍歷數組,獲取字典給模型的屬性賦值(KVC)

發佈了28 篇原創文章 · 獲贊 21 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章