2010-06-03 1 views
3

그래서 나는 1000년 1월 1일 14시 15분 16초 NSXMLParser for iPhone, NSXML 파서를 어떻게 사용합니까? 궁금한 점은 NSXML 파서를 사용하는 것이 궁금합니다. (NSX here : )

같은 요소와 간단한 XML 파일이 주어 말할 수 내가 (그것의에 로컬 BTW, 바탕 화면을 XML 파일을 구문 분석 NSXMLParser를 사용할 수있는 방법), 각 요소를 점검하고 배열에 각 요소를 저장하여 나중에 표시하거나 사용할 수 있습니까? 나는 그것에 대해 몇 가지 문서를 통해보고 있었고, 난 절대적으로 내가 3 가지 방법이 있다는 것을 알고 파서 사용하는 방법에 대한 아무 생각이 없다

를 오버라이드 (override) 할 수있는 (또는 그 이상 메신저 잘못된 경우 나 수정하시기 바랍니다) -. .etc didStartElement - 등등 didEndElement - 등등 foundCharacters

답변

4

간단한 일이 같은 것을하는 것입니다 : setDelegate는 것을

NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:<yourNSData>]; 
[xmlParser setDelegate:self]; 
[xmlParser parse]; 

공지 사항 : '자기'에 대리자를 설정하는 것입니다을 의미 현재의 오브젝트 따라서이 객체에서 질문에 언급 된 델리게이트 메서드를 구현해야합니다.

그래서 더 아래 코드에서, 페이스트 :

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
     namespaceURI:(NSString *)namespaceURI 
     qualifiedName:(NSString *)qualifiedName 
     attributes:(NSDictionary *)attributeDict{ 

     NSLog(@"I just found a start tag for %@",elementName); 
     if ([elementName isEqualToString:@"employee"]){ 
     // then the parser has just seen an <employee> opening tag 
     }   
    } 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
NSLog(@"the parser just found this text in a tag:%@",string); 
} 

등 등

그것은 당신이 어떤 태그의 값으로 설정 변수처럼 뭔가를 할 때 좀 더 열심히이다, 일반적으로 BOOL inEmployeeTag과 같은 클래스 변수 caleld를 사용하여 didStartElement : 메소드에서 true (예)로 설정하고 didEndElement : 메소드에서 false로 설정 한 다음 foundCharacters 메소드에서 값을 확인하십시오. 그렇다면 문자열의 값에 var를 할당하고, 그렇지 않으면 var을 할당합니다.

리처드