2011-02-14 6 views
0

NSURLConnection을 사용하여 데이터를 받았고 XML 형식의 문자열 인 다음 문자열을 받았습니다. 이제 문자열의 상태 노드를 가져 가고 싶습니다. XML 파싱을 사용하지 않고 해당 문자열을 가져 가고 싶습니다.iPhone에서 구문 분석하지 않고 XML에서 특정 문자열을 추출하는 방법은 무엇입니까?

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 

    NSString *urlDataString = [[NSString alloc] initWithData:self.recieveData encoding:NSUTF8StringEncoding]; 

반환 문자열 :

<?xml version="1.0" encoding="Utf-8"?><blacksheep><status>Success</status></blacksheep> 

출력 :

Succeess 

저를 도와주세요.

감사합니다.

+0

입니다. 당신은 아마 당신이 그것을 수동으로하고 싶지 않다고 말하고 싶었을 것입니다. – pyon

+0

@ 에두아르도 레온, 귀하의 의견을 보내 주셔서 감사합니다. 사실 xml 문자열을 받았으므로 NSXML 파서를 사용하여 문자열을 어떻게 파싱 할 수 있습니까? 감사. – Pugal

답변

3
NSString* str = @"<?xml version=\"1.0\" encoding=\"Utf-8\"?><blacksheep><status>Success</status></blacksheep>"; 
NSString* status = [[[[str componentsSeparatedByString: @"<status>"] objectAtIndex: 1] componentsSeparatedByString: @"</status>"] objectAtIndex: 0]; 

하지만주의해야합니다. 짧지 만 안전하지 않은 방법입니다. 따라서 추가 검사를하는 것이 좋습니다.

편집 : 더 좋은 방법은 당신은 * 당신은` `와` `태그 내부의 문자열을 추출 할 수 있도록 XML을 구문 분석 * 한

NSString* status = @"Failed"; 
NSArray* arr = [str componentsSeparatedByString: @"<status>"]; 
if([arr count] > 1) { 
     status = [[[arr objectAtIndex: 1] componentsSeparatedByString: @"</status>"] objectAtIndex: 0]; 
} 
+0

+1, @Max, 답장을 보내 주셔서 감사합니다. "이것은 짧지 만 안전하지 않은 방법"이라고 언급하셨습니다. 구문 분석을 사용하면 XML 구문 분석을 처리하는 데 몇 분이 걸립니다. 그래서 나는 XML 구문 분석을 피할 계획이었다. 그리고 하나 더, 내 경우에는 하나의 문자열이 상태와 같이 돌아올 것입니다. 상태 문자열은 항상 성공 또는 실패를 반환합니다. 그래서 내 애플 리케이션에서 그 방법을 사용할 수 있습니까? 제발 나를 안내 해줘. 감사합니다. – Pugal

+0

예, 전체 XML 구문 분석이 너무 많은 용도로 사용될 것이라고 생각합니다. – Max

+0

XML 구문 분석이 자신의 목적에 너무 많은 경우 XML 자체가 목적에 비해 너무 많습니다. 생각하지 않아도됩니까? 완전한 XML 문자열 대신 단일 문자 ('S' 또는'F')를 보내지 않는 이유는 무엇입니까? 대역폭 낭비가 적어 대역폭 부족으로 인해 애플리케이션의 병목 현상이 발생할 가능성이 더 큽니다. – pyon

관련 문제