応答を解析XML
していますが、望ましい結果が得られません。どこが間違っているのか理解できませんか? 私のXML応答は次のようになります:
<List>
<User>
<Id>1</Id>
</User>
<User>
<Employee>
<Name>John</Name>
<TypeId>0</TypeId>
<Id>0</Id>
</Employee>
<Id>0</Id>
</User>
</List>
これから、Id(1) と Name(John) の値が必要です。Id(0) は必要ありません。
私の解析コードは次のとおりです。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"List"])
{
arr=[[NSMutableArray alloc] init];
drr=[[NSMutableDictionary alloc] init];
}
srr=[[NSMutableString alloc] init];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[srr appendString:string];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"Id"])
{
[drr setObject:srr forKey:@"Id"];
[srr release],srr=nil;
return;
}
if([elementName isEqualToString:@"Name"])
{
[drr setObject:srr forKey:@"Name"];
[srr release],srr=nil;
[arr addObject:drr];
return;
}
if([elementName isEqualToString:@"List"])
{
[drr release];
}
[srr release],srr=nil;
}
出力を次のようにします。
(
{
Name="John";
Id="1";
}
)
しかし、私はこのようになっています:
(
{
Name = John;
Id = "0";
},
{
Name = John;
Id = "0";
}
)
どうすればいいですか?