2012-12-30 3 views
0

코코아에서 xml에서 다음 정보를 구문 분석하려고합니다.NSXML 파서로 구문 분석 코코아

<level> 
    <entity> 
    <name>red</name> 
    <id>0</id> 
    <body>false</body> 
    <x>0.0</x> 
    <y>0.0</y> 
    <rotation>0.0</rotation> 
    </entity> 

여기는 Apple에서 제공 한 nsxml 파서 가이드를 따르지 않았습니다.

NSString* currentElement; 


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

currentElement = elementName; 

} 



- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 

if([currentElement isEqualToString:@"name"]){ 
    NSLog(@"Name found: %@", string); 
} 

} 

내 발견 된 문자 방법에서 문을 기록하지만 반환되는 것은 "이름을 찾았습니다 :"이며 나머지는 비어 있습니다.

내 XML에서 다음 태그를 가져 오려면이 작업을 올바르게 수행하고 있습니까? 각 태그를 추출하고 싶습니다.

NSString* name = THE_NAME; 
int x = [THE_X_VALUE, intValue]; 

이 사람이 나를 도울 수 : 예를 들어

?

+0

"유일한 문자는"발견 된 문자입니다. ""- NSLog 만 "이름을 찾았습니다 :"라고 인쇄합니까? –

+0

죄송합니다. 예. –

+0

그 메서드는 모든 문자를 포함하지 않을 수도 있고 여러 번 호출 될 수 있으므로 실제로 그 문자를 NSMutableString으로 축적하고 싶습니까? –

답변

0

NSXMLParser는 종이에서 좋게 들리지만 실제로 사용하기 시작하면 정신 나간다. 이 길없는 경로에서 계속하려면 파서 : didStartElement :를 구현 한 다음 해당 파서 : foundCharacters가 상품을 배달하도록기도하십시오. 내 경험에 비추어 볼 때, NSXMLParser는 수수께끼를 부수고 하나씩 차례로 나눠주는 큰 아이와 같습니다. 처음에는 위대한 것처럼 보입니다. "아, 한 장 있고 다른 한 장! 그리고 한 번 더!" 그러나 곧 당신은 당황하게됩니다. "오, 저기, 5.0이 있습니다! 이제 회전 또는 y 좌표가 있습니까?" 누가 알아? 확실히 NSXMLParser가 아닙니다.

코드의 마지막 줄은 문자열의 숫자 값을 추출 할 때 NSDecimalNumber가 매우 편리합니다.