@NSXMLParser?實現的是?SAX?方法解析xml文件,只在xml文檔中查找特定條件的內容,并且只提取需要的內容。這樣做占用內存小,靈活,正好滿足我們的需求。他的缺點就是寫,遇到標簽就讀.
**1.創建****NSXMLParser**
要使用NSXMLParser要先創建它,設置各種屬性,主要用到以下幾個方法:
initWithContentsOfURL??通過NSURL創建解析器
initWithData?????????????????通過NSData創建解析器
setDelegate??????????????????為解析器定義委托
parse???????????????????????????運行解析器
~~~
NSData * xmlData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Student" ofType:@"txt"]];
NSXMLParser * xmlParser = [[NSXMLParser alloc]initWithData:xmlData];
xmlParser.delegate = self;
[xmlParser parse];
[xmlParser release];
~~~
**2.實現協議方法**
~~~
// 開始解析
- (void)parserDidStartDocument:(NSXMLParser *)parser{
NSLOG_FUNCTION;
}
//解析到某個起始標簽
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
NSLog(@"%@",elementName);
NSLOG_FUNCTION;
}
//解析到節點的值
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLOG_FUNCTION;
NSLog(@"%@",string);
}
//解析到某個結束標簽
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
NSLog(@"%@",elementName);
NSLOG_FUNCTION;
}
//結束解析
- (void)parserDidEndDocument:(NSXMLParser *)parser{
NSLOG_FUNCTION;
}
~~~
- 前言
- 沙盒機制與文件(一)
- 沙盒機制和文件(二)
- 沙盒機制和文件(三)
- NSBundle介紹以及讀取沙盒文件路徑問題
- 數據持久化(一)-----歸檔 讀寫 文件路徑
- 數據持久化(二)-----Sqlite
- 數據持久化(三)使用第三方類庫FMDB
- 數據持久化(四)之NSUserDefaults
- 數據持久化(五)之CoreData
- 數據持久化(六)之Using CoreData with MagicalRecord
- 數據解析(一)解析XML之系統自帶NSXMLParse類
- 數據解析(二)解析XML之GDataXMLNode
- 數據解析(三)解析JSON-----系統自帶NSJSONSerialization 與 第三方JSONKit
- iOS多線程編程(一)NSThread
- iOS多線程編程(二)NSOperationQueue
- iOS多線程編程(三)Grand Central Dispatch(GCD)詳解
- iOS網絡編程(一)NSURLConnection
- iOS網絡編程(二) 自定義請求網絡類----推薦用于需要請求過程片段數據
- iOS網絡編程(三) 異步加載及緩存圖片---->SDWebImage
- iOS網絡編程(四) 異步加載及緩存圖片-----自定義類
- iOS網絡編程(五) 異步加載及緩存圖片-----EGO
- iOS網絡編程(六) NSURLSession詳解
- iOS網絡編程(7) 第三方開源庫----->AFNetworking