2011-09-29 18 views
0

我正在使用下面的代碼,它給了我解析後的一個元素的字符串,而我想在第一個元素的結果的基礎上獲得另一個元素的文本。objective-c:Webservice,如何在通過NSXMLParser解析之後獲取兩個元素?

例如我從ResponseType得到bool值,現在基於該值我想獲得另一個元素的值(「TotalAmt」)。並且如果ResponseType爲0 anohter字段出現在DeclineReason的代碼中,然後我想要獲取DeclineReason的值。

<AuthorizeResult> 
      <ResultCode>Success</ResultCode> 
      <RequestTime>2011-09-30T01:42:54.1834586-04:00</RequestTime> 
      <ResultObj> 
       <RequestId>55258</RequestId> 
       <ResponseType>1</ResponseType> 
       <UserType>Permanent</UserType> 
       <RequestDate>2011-09-30T05:42:54.481</RequestDate> 
       <TransactionId>0081315926057572</TransactionId> 
       <TransactionCode>001440</TransactionCode> 
       <TotalAmt>1</TotalAmt> 
       <UserId>47</UserId> 
      </ResultObj> 
     </AuthorizeResult> 

我這個代碼,但它不是幹活G和得到 「的responseType」

-(void) parser:(NSXMLParser *) parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName attributes:(NSDictionary *) attributeDict { 
    if ([elementName isEqualToString:@"ResponseType"]) 
    { 
     if (!soapResults) 
     { 
      soapResults = [[NSMutableString alloc] init]; 
      elementFound = YES; 
     } 
    } 
} 


//---when the text in an element is found--- 
-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string { 
    if (elementFound) 
    { 
     [soapResults appendString: string]; 
    } 
} 


//---when the end of element is found--- 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    if ([elementName isEqualToString:@"ResponseType"]) 
    { //---displays the country--- 
     NSLog(@"%@", soapResults); 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Response Type!" message:soapResults delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
     [soapResults setString:@""]; 
     elementFound = FALSE; 
    } 
} 

回答

1

我調用了[xmlParser parse]兩次。

qelementName = @"ResponseType"; 
[soapResults setString:@""]; 
[xmlParser parse];    
ResponseType =[[NSString alloc] initWithFormat:@"%@", soapResults]; 

qelementName = @"TotalAmt"; 
[soapResults setString:@""]; 
[xmlParser parse]; 
TotalAmt = [[NSString alloc] initWithFormat:@"%@", soapResults]; 

它的工作原理。

0

才值怎麼樣

如果([的ElementName isEqualToString:@ 「ResultObj」] || [elementName isEqualToString:@「Reason」])

in didStartElement and didEndElement?