2012-06-04 2 views
0
을 사용하여 구문 분석 할 수 없습니다

나는 다음과 같은 XML 파일이 있습니다NSXML 파서

<?xml version="1.0"? encoding="UTF-8"?> 
<api> 
     <count count="55" /> 
     <spa> 
      <opt>aa</opt> 
      <opt>bb</opt> 
      <opt>cc</opt> 

     </spa> 
</api> 

M 다음 줄의 코드 사용 : "오류 오류 오류"로 출력을 받고 있어요, 그러나

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"space.xml"]; 

NSData *data = [[NSData alloc] initWithContentsOfFile:path]; 

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data]; 

//Initialize the delegate. 
XMLParser *theParser = [[XMLParser alloc] initXMLParser]; 

//Set delegate 
[xmlParser setDelegate:theParser]; 

//Start parsing the XML file. 
BOOL success = [xmlParser parse]; 

if(success) 
    NSLog(@"No Errors"); 
else 
    NSLog(@"Error Error Error!!!"); 

을 gdb에서. 나는 Objective C를 처음 접했고 오류를 극복 할 수 없었다. 누군가 도와 줄 수 있니? 감사.

+0

ur 위임 초기화에서이'XMLParser'는 무엇입니까? –

+0

XMLParser.h라는 파일이 있습니다. –

+0

이 파일에는 뭐가 있습니까? 또한 XMLParser.m을 가지고 있습니까? *** naveen ***은 ur XMLParser.m 파일에 모든 코드 행이없는 경우에만 & u를 씁니다. –

답변

1

// NSXMLParser를 사용하려고

NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:@"YourURL"]]; 
[parser setDelegate:self]; 
[parser parse]; 

// 다음은 당신에게 데이터

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

    {  
      if([elementName isEqualToString:@"spa"]){ 
      got = YES; //got is a BOOL and here we have encountere start tag i.e <spa> 
    } 
    } 

    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
    { 
      if(got) 
      { 
       NSLog(@"the Data is = %@",string); 
      } 
    } 

    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
    { 
     if([elementName isEqualToString:@"spa"]) 
     { 
      got = NO; //Here we have encountered the end tag </spa> 
     } 

    } 
+0

위 코드의 결과는 {Data is = aa, Data is = bb, Data is = cc}가됩니다. – superGokuN

1

을 얻을 것이다 대표는 경우 '경로'또는 '데이터을 확인 했 있습니다 '아무것도 아닌가?

또한 'parse'가 성공하지 못하면 'parserError'메서드를 사용하여 문제에 대한 추가 정보를 저장할 NSError 개체를 가져올 수 있습니다. NSXMLParser 클래스 참조에서 :

parserError
는 구문 분석 오류에 대한 정보를 얻을 수있는에서 NSError 객체를 돌려줍니다.

- (NSError *)parserError 

구문 분석 작업이 비정상적으로 오류의 원인을 결정하기 위해 종료 후에는이 메소드를 호출 할 수
토론.

가용성
iOS 2.0 이상에서 사용할 수 있습니다.

이렇게하면 NSError * 개체에서 'localizedDescription'메서드를 호출하여 문제에 대한 추가 정보를 얻을 수 있습니다.

도움이 되었기를 바랍니다.