日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

iOS中XML解析

發(fā)布時間:2023/12/13 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS中XML解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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ù)

// 加載整個XML數(shù)據(jù)GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];// 獲得文檔的根元素 -- videos元素GDataXMLElement *root = doc.rootElement;// 獲得根元素里面的所有video元素NSArray *elements = [root elementsForName:@"video"];// 遍歷所有的video元素for (GDataXMLElement *videoElement in elements) {HMVideo *video = [[HMVideo alloc] init];// 取出元素的屬性video.id = [videoElement attributeForName:@"id"].stringValue.intValue;video.length = [videoElement attributeForName:@"length"].stringValue.intValue;video.name = [videoElement attributeForName:@"name"].stringValue;video.image = [videoElement attributeForName:@"image"].stringValue;video.url = [videoElement attributeForName:@"url"].stringValue;// 添加到數(shù)組中[self.videos addObject:video];}

2.使用SAX方式解析XML數(shù)據(jù)使用的是蘋果自帶的解析框架NSXMLParser框架
// 解析XML數(shù)據(jù)

// 1.創(chuàng)建XML解析器 -- SAX -- 逐個元素往下解析NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];// 2.設(shè)置代理parser.delegate = self;// 3.開始解析(同步執(zhí)行)[parser parse];

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;

HMVideo *video = [HMVideo videoWithDict:attributeDict]; [self.videos addObject:video];

}

/**
* 解析到一個元素的結(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é)

以上是生活随笔為你收集整理的iOS中XML解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。