2012-10-30 23 views
1

我解析XML response.But我沒有得到期望的result.Could不明白的地方,我要去錯了嗎? 我的XML響應如下所示:在iphone中使用NSXMLParser進行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)和名稱(約翰)的價值。我不想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"; 
    } 
) 

我該怎麼辦呢?

+0

使用本連結[XML解析示例] [1] [1]:http://stackoverflow.com/questions/13117711/unable-to-store-and-retrieve-xml-data-從-的NSMutableArray/13119018#13119018 – NANNAV

+0

在您的示例中列出的XML是非常奇怪。基於它看起來像有2個用戶(ID 0和ID 1)的格式,並且該用戶有0 /名爲約翰其ID也爲0的僱員,並且是類型ID 0。這是更奇怪所作的結果你想要「Name = John:Id = 1」的事實。我可以理解,在許多情況下,您不能發佈真實的XML數據,但接近真實的東西肯定會幫助我們幫助您。 – NJones

+0

但是我正從服務URL這種反應,我必須這樣做,因爲它是..我不能改變service.Please幫助.. – Honey

回答

0

我建議你使用TBXML代替的NSXMLParser。它使用起來更快,更容易。