<?xml version="1.0" encoding="UTF-8"?>
<永遠的偶像>
<名字 name="梁朝偉">
<音樂>為情所困</音樂>
<movie>俠骨仁心</movie>
</名字>
<名字 name="劉德華">
<音樂>來生緣</音樂>
<movie>孤男寡女</movie>
</名字>
</永遠的偶像>
</xml>
利用xml檔案初始NSXMLParser物件
NSData *data = [NSData dataWithContentsOfFile:path];
xmlParser = [[NSXMLParser alloc] initWithData:data];
設定delegate,如此才能於NSXMLParserDelegate的method被呼叫時做處理
[xmlParser setDelegate:self];
呼叫NSXMLParser物件的parse method開始進行parse
parse method is a block call,做完才return
[xmlParser parse];
[xmlParser release];
以下三個method為我們最常使用的NSXMLParserDelegate method
1. 於遇到XML tag開頭時被呼叫,可取得tag的名稱以及tag裡的attribute
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
NSLog(@"didStartElement");
NSLog(@"elementName %@", elementName);
for(id key in attributeDict)
{
NSLog(@"attribute %@", [attributeDict objectForKey:key]);
}
}
2. 找到XML tag所包含的內容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
NSLog(@"foundCharacters %@", string);
}
3. 於遇到XML tag結尾時被呼叫
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"didEndElement");
NSLog(@"elementName %@", elementName);
}
測試輸出:
2011-03-26 16:04:46.172 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.175 XmlParse[12296:207] elementName 永遠的偶像
2011-03-26 16:04:46.177 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.178 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.179 XmlParse[12296:207] elementName 名字
2011-03-26 16:04:46.179 XmlParse[12296:207] attribute 梁朝偉
2011-03-26 16:04:46.180 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.181 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.181 XmlParse[12296:207] elementName 音樂
2011-03-26 16:04:46.182 XmlParse[12296:207] foundCharacters 為情所困
2011-03-26 16:04:46.183 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.184 XmlParse[12296:207] elementName 音樂
2011-03-26 16:04:46.185 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.185 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.186 XmlParse[12296:207] elementName movie
2011-03-26 16:04:46.187 XmlParse[12296:207] foundCharacters 俠骨仁心
2011-03-26 16:04:46.188 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.189 XmlParse[12296:207] elementName movie
2011-03-26 16:04:46.190 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.191 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.192 XmlParse[12296:207] elementName 名字
2011-03-26 16:04:46.193 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.194 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.195 XmlParse[12296:207] elementName 名字
2011-03-26 16:04:46.196 XmlParse[12296:207] attribute 劉德華
2011-03-26 16:04:46.196 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.197 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.198 XmlParse[12296:207] elementName 音樂
2011-03-26 16:04:46.198 XmlParse[12296:207] foundCharacters 來生緣
2011-03-26 16:04:46.199 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.200 XmlParse[12296:207] elementName 音樂
2011-03-26 16:04:46.201 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.202 XmlParse[12296:207] didStartElement
2011-03-26 16:04:46.202 XmlParse[12296:207] elementName movie
2011-03-26 16:04:46.203 XmlParse[12296:207] foundCharacters 孤男寡女
2011-03-26 16:04:46.204 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.204 XmlParse[12296:207] elementName movie
2011-03-26 16:04:46.206 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.206 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.207 XmlParse[12296:207] elementName 名字
2011-03-26 16:04:46.208 XmlParse[12296:207] foundCharacters
2011-03-26 16:04:46.210 XmlParse[12296:207] didEndElement
2011-03-26 16:04:46.212 XmlParse[12296:207] elementName 永遠的偶像
作者已經移除這則留言。
回覆刪除