標籤:des style blog class code java
解析:從事先規定好的格式中提取資料
前提:提前約定好格式。
XML解析
DOM :Document Object Model解析
原理: 一次性讀入整個XML 以棧的方式解析每一個標籤,開標籤入棧 關標籤出棧 當棧中沒有任何元素的時候解析結束
優點: 一次解析出全部資料 而且有明顯的層級關係
缺點:當XML太大的時候特別占記憶體
解決:將大的XML分成多個小的XML
SAX:Simple API for XML 解析 基於事件驅動的解析方式,逐行解析資料(採用協議回調機制)
優勢:逐行解析,不需要讀入整個XML因此更節省記憶體空間 因為是基於回調的解析方式,所以使用者可以更加靈活的控制解析過程
缺點:需要使用者自己去處理資料
NSXMLParser是IOS的XML解析類,採用sax方式解析資料 (不常用,幾乎不用)
GDataXMLNode是googol提供的開源XML解析類 採用DOM方式解析資料(常用此方式解析)
使用流程:1 將GDataxMLNode.h和GDataXMLNode.m檔案加入到項目中
2 進入Xcode 加入libxml.dylib類庫 )(工程 - build Phases 添加上類庫 )
3 找到Search Paths段,在Header Search Paths添加值為:/usr/include/libxml2
NSString *xmlFilePath = [[NSBundlemainBundle] pathForResource:@"Student"ofType:@"xml"];
NSData *data = [NSData dataWithContentsOfFile:xmlFilePath];
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; // 解析完畢
NSLog(@"%@", document.rootElement);
// xPath
// 相對路徑使用//表示相對路徑
// 取出節點中所有叫 name 的節點....
NSArray *names = [document nodesForXPath:@"//student/name" error:nil];
NSArray *sexs = [document nodesForXPath:@"//student/sex" error:nil];
NSArray *ages = [document nodesForXPath:@"//student/age" error:nil];
//絕對路徑要給出完整路徑 / 表示絕對路徑
NSArray *sex = [document nodesForXPath:@"/students/student/sex" error:nil];
JSON解析
javascripe object na
1 json 格式要正確 最後一個元素後面沒有逗號“,”
- (id)objectFromJSONString 將字串解析成指定對象
- (id)objectFromJSONData 將data資料解析成指定對象
2
/**
* JSON解析
* 1 建立(或匯入).json檔案
* 2 擷取檔案路徑 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"檔案名稱" ofType:@"json"]
* 3 得到檔案中的資料 NSString NSData
* 4 解析 a 使用第三方工具JSONKit b 使用 NSJSONSerialization
*/
NSString *filePath = [[NSBundlemainBundle] pathForResource:@"Person"ofType:@"json"];
//解析
// 使用第三放解析工具 JSONKit
// 通過字串
NSString *JSONStr = [NSStringstringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
NSDictionary *JSONDic = [JSONStr objectFromJSONString];
// 通過data資料
NSData *JSONData = [NSData dataWithContentsOfFile:filePath];
NSDictionary *JSONDic2 = [JSONData objectFromJSONData];
// 使用蘋果內建的解析類 NSJSONSerialization
NSDictionary *JSONDic3 = [NSJSONSerializationJSONObjectWithData:JSONData options:(NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves) error:nil];
// NSString --> NSData
NSString *theStr = @"Hello Lanou";
NSData *theData = [theStr dataUsingEncoding:NSUTF8StringEncoding];
// NSData --> NSString
NSString *string = [[NSStringalloc] initWithData:theData encoding:NSUTF8StringEncoding];