1

応答を解析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";
    }
)

どうすればいいですか?

4

1 に答える 1

0

NSXMLParserの代わりに TBXMLを使用することをお勧めします。はるかに高速で使いやすいです。

于 2012-10-30T03:51:36.220 に答える