2012-03-05 41 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

相关问题