XML資料解析
解析來自伺服器返回的XML資料,介紹兩種方式:
1,NSXMLParser解析器 : SAX方式解析(從根元素開始,按順序一個一個的解析,適合解析大檔案);
2,GDataXML : DOM方式解析(一次性將整個XML文件載入進記憶體,適合解析小的檔案);
1 NSXMLParser
1, 確認請求路徑
NSURL *url = [NSURL URLWithString:@"xxx"];
2, 建立會話物件
NSURLSession *session = [NSURLSession sharedSession];
3, 建立請求Task
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:
^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//建立XML解析器 NSXMLParser(SAX---從根元素一個元素一個元素的解析)
NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];
//設定代理
parser.delegate = self;
//開始解析(同步是會阻塞當前執行路徑)
[parser parse];
}];
4,執行Task
[dataTask resume];
5,代理方法
//1.當開始解析整個XML文件的時候回撥用
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@"parserDidStartDocument");
}
//2.開始解析某個元素的時候呼叫(呼叫多次)
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:
(NSDictionary<NSString *,NSString *> *)attributeDict
{
NSLog(@"didStartElement %@元素開始解析--%@",elementName,attributeDict);
}
//3.某個元素解析完畢的時候呼叫
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"didEndElement--%@元素解析完畢",elementName);
}
//4.整個XML文件解析完畢的時候呼叫
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"parserDidEndDocument");
}
2 GDataXML
使用此方法解析,需先匯入一個框架:GDataXML,接著按照框架註釋配置編譯器
GDataXML框架是MRC的,所以還需要告訴編譯器以MRC的方式處理GDataXML的程式碼
1, 確認請求路徑
NSURL *url = [NSURL URLWithString:@"xxx"];
2, 建立會話物件
NSURLSession *session = [NSURLSession sharedSession];
3, 建立請求Task
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:
^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//載入XML文件
GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];
//獲得根元素 得到根元素內部所有名字為abc的子元素
NSArray *eles = [doc.rootElement elementsForName:@"abc"];
}];
4,執行Task
[dataTask resume];
相關文章
- Dom4j解析XML資料XML
- JAVA-使用SAX解析XML資料JavaXML
- NPM酷庫051:xml2js,解析XML格式資料NPMXMLJS
- Android 中 XML 資料解析詳解AndroidXML
- iOS開發之解析XML格式資料iOSXML
- Xml解析XML
- Android之深入理解xml資料的pull解析AndroidXML
- 資料庫和XML __ 從資料庫中提取xml資料庫XML
- iOS – XML解析iOSXML
- go 解析xmlGoXML
- xml php 解析XMLPHP
- iOS - XML解析iOSXML
- 【Java】解析xmlJavaXML
- Java解析XMLJavaXML
- jaxb解析xmlXML
- DOM解析XMLXML
- XML資料島(XML Data Island) (轉)XML
- Python解析xml[xml.dom]PythonXML
- 175.XML解析XML
- C# XML解析C#XML
- 使用jdom解析XMLXML
- 解析xml筆記XML筆記
- XML解析技術XML
- xml解析之domXML
- 關於xml解析XML
- 讀取xml檔案 解析雙層xmlXML
- xml資料轉陣列XML陣列
- XML 檔案解析實踐 (DOM 解析)XML
- python之XML解析PythonXML
- jdom解析xml檔案XML
- JAVA進行XML解析JavaXML
- java使用sax解析xmlJavaXML
- GData解析XML檔案XML
- python 的xml解析PythonXML
- Android中解析XMLAndroidXML
- SQLServer解析xml到OracleSQLServerXMLOracle
- 解析帶字首的xmlXML
- jquery 解析xml檔案jQueryXML