iOS中XML解析
iOS中XML解析分為兩種實現(xiàn)方式:SAX與DOM
SAX方式:主要是事件驅(qū)動的解析方式,是逐行讀取XML數(shù)據(jù),不斷回調(diào)代理,告訴代理當(dāng)前解析的元素開始或者結(jié)束。
DOM解析方式:是講整個XML數(shù)據(jù)全部讀入內(nèi)存,然后形成一顆樹形結(jié)構(gòu),再根據(jù)元素的名稱來讀取相關(guān)的屬性。
優(yōu)缺點:
(1)SAX解析適合大型文件解析,對內(nèi)存占用比較小,但是解析是采用事件驅(qū)動方式,因此代碼比較零散復(fù)雜。
(2)DOM解析方式適合小型文件解析,代碼實現(xiàn)非常簡單,基本是按照元素名稱來索引相關(guān)的屬性。但是在解析大型文件的時候,由于是將XML數(shù)據(jù)全部讀入內(nèi)存,因此內(nèi)存占用比較大。
1.下面首先介紹簡單的DOM解析方式:使用google開源的GDataXML開源框架。
// 解析XML數(shù)據(jù)
2.使用SAX方式解析XML數(shù)據(jù)使用的是蘋果自帶的解析框架NSXMLParser框架
// 解析XML數(shù)據(jù)
pragma mark - NSXMLParser的代理方法–
/**
* 解析到文檔的開頭時會調(diào)用
*/
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
// NSLog(@”parserDidStartDocument—-“);
}
/**
* 解析到一個元素的開始就會調(diào)用
*
* @param elementName 元素名稱
* @param attributeDict 屬性字典
*/
- (void)parser:(NSXMLParser )parser didStartElement:(NSString )elementName namespaceURI:(NSString )namespaceURI qualifiedName:(NSString )qName attributes:(NSDictionary *)attributeDict
{
if ([@”videos” isEqualToString:elementName]) return;
}
/**
* 解析到一個元素的結(jié)束就會調(diào)用
*
* @param elementName 元素名稱
*/
- (void)parser:(NSXMLParser )parser didEndElement:(NSString )elementName namespaceURI:(NSString )namespaceURI qualifiedName:(NSString )qName
{
// NSLog(@”didEndElement—-%@”, elementName);
}
/**
* 解析到文檔的結(jié)尾時會調(diào)用(解析結(jié)束)
*/
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
// NSLog(@”parserDidEndDocument—-“);
}
總結(jié)
- 上一篇: Cacti v1.2.8(CVE-202
- 下一篇: asp.net ajax控件工具集 Au