2012-03-05 46 views
0

我是iPhone新手。我有兩個XML標籤具有相同的名稱。如何區分這兩個標籤。我的意思是如何識別何時第一個標籤將被關閉如何在iPhone中使用ns xml解析器區分兩個包含相同名稱的Xml標記

<data> 
    <level>0</level> 
    <type>video</type> 
    <file>file_CTcE96nTfP3sXIQ8.wmv</file> 
    <position>0,0,640,360</position> 
    <duration>121</duration> 
</data> 
<data> 
    <level>0</level> 
    <type>image</type> 
    <file>file_CTNJ1da7ntcTGmxd.jpg</file> 
    <position>640,0,1024,360</position> 
    <duration>121</duration> 
</data> 
<data> 
    <level>0</level> 
    <type>image</type> 
    <file>file_CTAo1yLWaZqXkpic.png</file> 
    <position>0,360,337,480</position> 
    <duration>121</duration> 
</data> 

我已經實現了這些方法。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 

    if ([elementName isEqualToString:@"data"]) { 

    } 

}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
??? 
} 

這裏有三個數據標籤存在。我想把所有的數據標籤放在三個數組中。我如何能實現that.i的意思是這樣

data1(file,type,position,duration) 
data2(file,type,position,duration) 
data3(file,type,p‌​osition,duration) 
+0

您以前是否嘗試使用NSXMLParser? – 2012-03-05 08:54:14

+0

你只能解析一個數據嗎? – Hanon 2012-03-05 09:05:50

+0

@KAREEM MAHAMMED不,我是新來的iPhone .. – 2012-03-06 03:53:18

回答

1

在didStartElement

if ([elementName isEqualToString:@"data"]) { 
    data = [[NSMutableDictionary alloc] init]; 
    level = [NSMutableString alloc] init]; 
    type = [NSMutableString alloc] init]; 
    position = [NSMutableString alloc] init]; 
    duration = [NSMutableString alloc] init]; 
} 

然後在didEndElement

if ([elementName isEqualToString:@"data"]) { 
    [data setObject:type forKey:@"type"]; 
    [data setObject:position forKey:@"position"]; 
    [data setObject:duration forKey:@"duration"]; 
    [dataList addObject:data]; 
} 

ü需要添加foundCharacters委託方法和賦值這裏的字符串

if ([currentElement isEqualToString:@"type"]) { 
    [type appendString:string]; 
} 

if ([currentElement isEqualToString:@"position"]) { 
    [position appendString:string]; 
} 
if ([currentElement isEqualToString:@"duration"]) { 
    [duration appendString:string]; 
} 

級別,位置和持續時間將被解析爲正常標記。

0
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 

    if ([elementName isEqualToString:@"data"]) 
     { 

     } 
} 
+0

我已經完成了這個元素標籤將結束那段時間,我想將它存儲在每個數組的每個結束標籤上。 – 2012-03-05 12:12:21

+0

@Piyush Patel我現在更新了我的代碼.. – 2012-03-05 12:22:05

相關問題