2012-08-27 4 views
1

이 질문은 xcode에서 NSString을 조작하기위한 것입니다. 값을 얻기 위해 NSString에서 XML 구문 분석

나는 내가이 문자열에서 개별 값을 얻을 내있는 NSString 변수에 넣을 수있는 방법이

<current temperature="73" day="Mon" humidity="59" windspeed="10"></current> 

처럼 보이는 웹에서 얻을 XML 텍스트 문자열이?

NSString *tempStr = ?? 
NSString *dayStr = ?? 
NSString *windspeedStr = ?? 
+1

아마도 작업을 수행 할 XML 구문 분석기를 구현해야합니까? –

+2

와 같은 파서를 사용하십시오. XML을 올바르게 구문 분석하기위한 RaptureXML. 스캐너와 정규 표현식은 그러한 작업을위한 선택의 무기가 아닙니다. – Till

답변

2

먼저 RaptureXML project site에 설명 된대로 프로젝트 내에 RaptureXML을 다운로드하여 포함하십시오.

주어진 단일 줄을 구문 분석하려면 다음 스 니펫을 사용하십시오. 입력은 inXmlString으로 전달됩니다.

//transform string into an XML DOM 
RXMLElement *rootNode = [RXMLElement elementFromXMLString:inXmlString 
              withEncoding:NSUTF8StringEncoding]; 
if (rootNode == nil || ![rootNode isValid]) 
{ 
    //do something, we failed! 
} 
else 
{ 
    NSString *temperature = [rootNode attribute:@"temperature"]; 
    NSString *day = [rootNode attribute:@"day"]; 
    NSString *windspeed = [rootNode attribute:@"windspeed"]; 
} 
+0

포인터 주셔서 감사합니다. –

-2

기본적인 아이디어는 NSString 메소드의 componentsSeparatedByString :을 사용하여 원하는 데이터를 파싱하는 것입니다. 자신의 시나리오에 맞게 정확하게 작업하려면 약간 더 많은 작업이 필요할 것입니다.

NSArray* paArray1= [pstrXMLString componentsSeparatedByString:@" "]; 
temlStr= [[[paArray1 objectAtIndex:1] componentsSeparatedByString:@"="] objectAtIndex:1]; 
dayStr= [[[paArray1 objectAtIndex:2] componentsSeparatedByString:@"="] objectAtIndex:1]; 
windspeedStr= [[[paArray1 objectAtIndex:3] componentsSeparatedByString:@"="] objectAtIndex:1]; 
+1

연결된 웹 서비스가 매개 변수 순서를 변경하기로 결정하자마자 실패합니다 (이 답변은 위험하므로 따라야하지 않지만 작업을 수행 할 때까지 계속 다운 다운하지 않았습니다). – Till

+0

나는 그런 체크를하는 것을 볼 수 없다. – Till

+0

당신의 대답은 유효하다. 내 XML이 변경되지 않으므로 귀하의 요점은 유효합니다. 나는 그것을 순위에 올렸다. –