2013-10-31 1 views
1

websevice를 통해 반환 된 XML 데이터를 구문 분석하여 서버에서 값을 가져 오려고합니다.xml 서비스에서 값을 가져 오는 동안 문자열 대신 n이 표시됩니다.

분석에 사용 된 코드

-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    rValue= @""; 
    isTag = FALSE; 
    if ([elementName caseInsensitiveCompare:@"BusinessName"] == NSOrderedSame) 
     isTag=YES; 

} 


-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{ 
if (isTag) { 
     rValue =strin; 
    } 
} 

-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 

    if([elementName caseInsensitiveCompare:@"BusinessName"] == NSOrderedSame) 
     [myarray addObject:rValue]; 
} 

-(void) parserDidEndDocument:(NSXMLParser *)parser 
{ 
    NSLog(@"%@",myarray); 
} 

rValue 정적 스트링 아래이고;

내 배열을 인쇄 한 후에는

(
"Book Store", 
"Birch river grill", 
PIC, 
"Drink Juice", 
"Cofee Cafee", 
"Diag Block", 
"Delici Store", 
"\n\n", 
"Spoon Fork", 
"\n", 
"\n\n", 
"\n\n\n", 
Allow, 
"Enjoy Traveling", 
"Grwing Three", 
"\n", 
"\n\n" 
) 

이 왜 \ n을 (백 슬래시)이 값은, 내가 브라우저에서 웹 서비스를 선택? 값 (BUSINESSNAME) 대신에 발생하는되어, 다음과 같습니다 을 올바로 반환합니다. 완전히 17 개의 요소가 반환되며 이중 qout없이 로그에 인쇄 된 일부 문자열을 볼 수 있습니다. 그것은 문제가되지 않습니다. 그러나, 왜 그렇게 보이는 것일까 요? 백 슬래시 대신 올바른 값을 얻으려면 어떻게해야합니까?

  • 내가 뭘 잘못하고 있니?
  • 어떻게 해결할 수 있습니까? foundCharacters 이후

답변

4

이 태그의 내용에 따라 여러 번 호출 할 수 있습니다, 이것은 잘못된 것입니다 :

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{ 
    if (isTag) { 
     rValue =strin; 
    } 
} 

보다는 rValuestrin를 할당, 당신은 이 그것을를 추가해야합니다. 현재 실제 값 (예 : @"BusinessName")이 인식되고 할당되지만 계속 문자열 @"\n\n\n"은 동일한 태그 안에 들어 있으며 먼저 발견 된 값 위에 할당됩니다.

이 같은 NSMutableStringrValue을 확인하고 appendString를 사용 : 콘텐츠 고원뿐만 아니라 말에 \n의이

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{ 
    if (isTag) { 
     [rValue appendString:strin]; 
    } 
} 

하는 것으로.

NSString *finalValue = [rValue stringByTrimmingCharactersInSet: 
    [NSCharacterSet whitespaceAndNewlineCharacterSet] 
]; 
+0

지금은 같은 배열을 얻고있다' "서점 :이 후행 문자를 필요로하지 않는 경우 stringByTrimmingCharactersInSet:를 호출하고 매개 변수로 [NSCharacterSet whitespaceAndNewlineCharacterSet] 전달하여, 예를 들어, 수동으로 제거해야합니다 \ n ", "자작 나무 강철 그릴 \ n ", "PIC \ n ", "주스 마셔 \ n "'어떻게 수정합니까? – NAZIK

+0

즉,'\ n'을 추가 문자열을 방지하는 방법은 무엇입니까? pl가 제안한다. – NAZIK

+0

제안 사항이 있으십니까? – NAZIK

관련 문제