2012-03-05 9 views
0

iPhone開発には初めてです。私は2つのXMLタグには同じ名前があります。この2つのタグを区別する方法。最初のタグがいつ閉じられるかを特定する方法を意味します。ns xmlパーサーを使用してiPhoneで同名の2つの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 { 
??? 
} 

は、3個のデータタグがそこにあります。私はすべてのデータタグを3つの配列に入れたいと思う。どのように私はthat.iを達成することができます次にdidEndElement

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

にUがfoundCharactersにデリゲートメソッドを追加し、に値を割り当てる必要が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]; 
} 

でこの

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

以前にNSXMLParserを試してみましたか? –

+0

1つのデータだけを解析できますか? – Hanon

+0

@KAREEM MAHAMMEDいいえ私はiPhoneを初めて使っています。 –

答えて

1

のような意味ここの文字列

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

私はすでにこの要素を実行していますタグはその時点で終了します。私はそれぞれのすべての終了タグに対して各配列にそのタグを保存します。 –

+0

@Piyush Patel私のコードを今更新しました.. –

関連する問題