首頁 後端開發 XML/RSS教程 IOS解析XML文件

IOS解析XML文件

Feb 20, 2017 pm 02:47 PM

這裡使用NSXMLParser來解析,這個是apple自帶的xml解析庫,有個參考文章:http://www.php.cn/

在Xcode中加入一個xml檔:


<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<Shop shoplocation="beijing">
    <id>001</id>
    <name>John</name>
    <url>Reminder</url>
    <info>Don&#39;t forget the meeting!</info>
</Shop>
<Shop shoplocation="dongcheng">
    <id>002</id>
    <name>Jack</name>
    <url>cc</url>
    <info>how are you!</info>
</Shop>
<Shop shoplocation="haidian">
    <id>003</id>
    <name>Tom</name>
    <url>bb</url>
    <info>I am fine!</info>
</Shop>
</root>
登入後複製





先唸出來



   NSString* path =  [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"xml"];
    NSData *data = [[NSData alloc] initWithContentsOfFile:path options:(NSDataReadingMappedIfSafe) error:nil];
    NSXMLParser *parser=[[NSXMLParser alloc] initWithData:tmpdata];
<span style="white-space:pre">	</span>[parser setDelegate:self];
	[parser parse];
	[parser release];
    [self parseShopListFromResponse:data];
登入後複製



然後進行解析:


#pragma mark NSXMLParser delegate methods
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
  namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
	attributes: (NSDictionary *)attributeDict {
    self.currentTag = elementName;
	if ([elementName isEqualToString:@"root"]) {
		self.tmpList = [[NSMutableArray alloc] init];
	}else if ([elementName isEqualToString:@"Shop"]) {
		self.tmpShop = [[ShopData alloc] init];
        NSArray* array = [attributeDict allKeys];
        NSString* key = [array lastObject];
        NSString*s  = [attributeDict objectForKey:key];
        self.tmpShop.info = s;
	}
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    if (self.currentString == nil) {
        self.currentString = [[NSMutableString alloc] initWithString:@""];
    }
    
    if ([self.currentTag isEqualToString:@"name"] ||
        [self.currentTag isEqualToString:@"id"] ||
        [self.currentTag isEqualToString:@"url"] ||
        [self.currentTag isEqualToString:@"info"]) {
        [self.currentString appendString:string];
	}
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
 
	if ([elementName isEqualToString:@"Shop"]) {
		[self.tmpList addObject:self.tmpShop];
        [self.tmpShop release];
	} if ([elementName isEqualToString:@"name"]) {
        self.tmpShop.name = [self.currentString copy];
        [self.currentString setString:@""];
	}else if ([elementName isEqualToString:@"id"]) {
		self.tmpShop._id = [self.currentString copy];
        [self.currentString setString:@""];
	}else if ([elementName isEqualToString:@"url"]) {
		self.tmpShop.url = [self.currentString copy];
        [self.currentString setString:@""];
	}else if ([elementName isEqualToString:@"info"]) {
//		self.tmpShop.info = [self.currentString copy];
//        [self.currentString setString:@""];
	}
}

- (void)parserDidStartDocument:(NSXMLParser *)parser {
	NSLog(@"开始解析xml文件");
}

- (void)parserDidEndDocument:(NSXMLParser *)parser {
	
	[self.tableView reloadData];
	NSLog(@"解析xml文件完成");
}
登入後複製





Shopdata的結構是:


@property (nonatomic,retain) NSString *name;
@property (nonatomic,retain) NSString *url;
@property (nonatomic,retain) NSString *_id;
@property (nonatomic,retain) NSString *info;
@property (nonatomic, retain) UIImage *appIcon;
登入後複製

 以上就是IOS解析XML檔案 的內容,更多相關內容請關注PHP中文網(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

蘋果iOS 18首版被曝Bug多到飛起:發熱嚴重 微信延遲 蘋果iOS 18首版被曝Bug多到飛起:發熱嚴重 微信延遲 Jun 13, 2024 pm 09:39 PM

一年一度的WWDC已經結束,iOS18無疑是大家關注的一大焦點。目前有許多iPhone用戶都搶先升級到了iOS18,但各種系統Bug讓人難受。有部落客表示,升級iOS18要謹慎,因為「Bug多到飛起」。部落客表示,如果你的iPhone是主力機,建議不要升級iOS18,因為第一版的Bug非常多。他也彙整了幾個目前遇到的系統Bug:1、切換圖示樣式卡頓,導致圖示不顯示2、手電筒示寬動畫經常遺失3、抖音App上傳不了影片4、微信訊息延遲10s左右推送5 、電話偶爾打不出去,顯示黑屏6、發熱嚴

蘋果重發 iOS / iPadOS 18 Beta 4 更新,版本號升至 22A5316k 蘋果重發 iOS / iPadOS 18 Beta 4 更新,版本號升至 22A5316k Jul 27, 2024 am 11:06 AM

感谢网友吉茵珂絲、xxx_x、番茄炒西红柿、Terrence、香辣鸡腿堡的线索投递!7月27日消息,苹果公司今天面向开发者,重新发布了iOS/iPadOS18Beta4更新,内部版本号从22A5316j升级到22A5316k,目前尚不清楚两个Beta4版本更新之间的区别。已经注册的开发者可以打开“设置”应用程序,进入“软件更新”部分,点击“测试版更新”选项,然后切换iOS18/iPadOS18开发者测试版设置来选择测试版。下载并安装测试版需要与开发者账户关联的AppleID。7月24日报道,iO

蘋果發布用於同態加密的開源 Swift 軟體包,已部署在 iOS 18 中 蘋果發布用於同態加密的開源 Swift 軟體包,已部署在 iOS 18 中 Jul 31, 2024 pm 01:10 PM

7月31日消息,蘋果昨天(7月30日)發布新聞稿,宣布推出新的開源Swift包(swift-homomorphic-encryption),用於在Swift程式語言中啟用同態加密。註:同態加密(HomomorphicEncryption,HE)是指滿足密文同態運算性質的加密演算法,即資料經過同態加密之後,對密文進行特定的計算,得到的密文計算結果在進行對應的同態解密後的明文等同於明文資料直接進行相同的計算,實現資料的「可算不可見」。同態加密技術可以計算加密數據,而且不會向操作過程洩漏底層的未加

更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite 更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite Aug 18, 2024 am 06:34 AM

更新:Saunders Tech 已將教學上傳到他的 YouTube 頻道(下面嵌入影片),解釋如何在歐盟境外的 iPad 上安裝 Fortnite 和 Epic Games Store。然而,該過程不僅需要特定的 iO 測試版

蘋果 iOS 18「無邊記」應用新功能:擴充 Scenes 功能、引入網格對齊 蘋果 iOS 18「無邊記」應用新功能:擴充 Scenes 功能、引入網格對齊 Jun 02, 2024 pm 05:05 PM

6月1日消息,科技媒體AppleInsider今天發布博文,表示蘋果將會在iOS18系統中,為「無邊記」(Freeform)應用程式擴充推出「Scenes」的全新導航功能,並新增物件對齊的新選項。 「無邊記」應用簡介先簡單介紹下「無邊記」應用,應用於2022年推出,目前已推出iOS、iPadOS、macOS15以及visionOS版本。蘋果官方介紹如下:「無邊記」是讓靈感變成現實的絕佳工具。在支援幾乎所有文件類型的靈活畫布上勾勒項目草圖、設計心情看板或開始腦力激盪。借助iCloud,所有看板

蘋果 iOS 17.5 RC 版發布:允許歐盟 iPhone 用戶從網站下載應用 蘋果 iOS 17.5 RC 版發布:允許歐盟 iPhone 用戶從網站下載應用 May 08, 2024 am 09:30 AM

【點此直達升級教學】5月8日訊息,蘋果今日向iPhone用戶推送了iOS17.5RC更新(內部版本號:21F79),這次更新距離上次發布隔了70天。如何升級iOS/iPadOS/watchOS/macOS開發版和公測版?升級iOS/iPadOS17開發者預覽版及公測版,可參考家友分享經驗:經驗貼一||經驗貼二||經驗貼三||經驗貼四。從iOS/iPadOS16.4開發者預覽版Beta1開始,需要註冊蘋果開發者計劃,註冊後開啟系統【設定】【軟體更新】即可看到升級選項。需注意,你的iPhone或iP

蘋果 iOS / iPadOS 18 開發者預覽版 Beta 4 發布:新增 CarPlay 桌布、梳理設定選項、增強相機控制 蘋果 iOS / iPadOS 18 開發者預覽版 Beta 4 發布:新增 CarPlay 桌布、梳理設定選項、增強相機控制 Jul 24, 2024 am 09:54 AM

感謝網友辣雞腿堡、軟媒新友2092483、手寫的從前、DingHao、小星_14、窩窩頭吃大口、非影Q、軟媒新友2168428、Slades、Aaron212、快樂小刺蝟、小伯爵、吃魚的小奶貓的線索投遞! 【點此直達升級教學】7月24日訊息,蘋果今日向iPhone和iPad用戶推送了iOS/​​iPadOS18開發者預覽版Beta4更新(內部版本號:22A5316j),這次更新距離上次發布隔了15天。 Carplay壁紙蘋果為CarPlay添加了壁紙,涵蓋淺色和深色兩種模式,其壁紙風格類似於iPhon

iPhone12 ios16要不要更新ios17.5beta3? ios17.5beta3體驗感如何? iPhone12 ios16要不要更新ios17.5beta3? ios17.5beta3體驗感如何? Apr 25, 2024 pm 04:52 PM

實用分享......隨著蘋果不斷推出新的iOS版本,許多iPhone用戶都面臨著是否應該升級系統的選擇。而最新iOS17.5Beta3的發布引起了廣泛關注,尤其對於iPhone12用戶而言,是否應該放棄現有的iOS16,轉而嘗試新的Beta版本,成為了一個值得探討的問題。基於實際體驗,分析iPhone12升級至iOS17.5Beta3的利弊,為廣大果粉們提供參考。首先,我們要先明確的是,Beta版本通常是給開發​​者或願意承擔一定風險的早期體驗者使用的。這意味著,相較於正式版,Beta版本可能包含

See all articles