我是iPhone开发的新手。我有两个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 {
???
}
这里有三个数据标签。我想把所有的每个数据标签放在三个数组中。我怎么能实现那个。我的意思是这样的
data1(file,type,position,duration)
data2(file,type,position,duration)
data3(file,type,position,duration)
答案 0 :(得分: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];
}
级别,位置和持续时间将被解析为普通标签..
答案 1 :(得分:0)
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"data"])
{
}
}