2012-05-27 10 views
0

없는 데이터를 얻을하지 않는 I 예를 들어 다음과 같은 XML 파일이 :NSXMLParser 문제가 ...</p> <p>을 내 모든 항목과 내가 봤어 모든 tutos에도 불구하고 NSXMLParser를 사용하는 방법을 이해하는 데 어려움이

<rss> 
<channel> 
<title>The Title</title> 
<link>A URL</link> 
<language>English</language> 
<item> 
    <name>John</name> 
    <title>John4034</title> 
    <city>LA</city> 
    <country>USA</country> 
</item> 
.... 
<item> 
    <name>Marc</name> 
    <title>Marc2942</title> 
    <city>London</city> 
    <country>England</country> 
</item> 
</channel> 
</rss> 

항목의 NSMutableArray에있는 모든 항목을 저장하려고합니다. 내 클래스 항목은 4 NSString (이름, 직위, 도시, 국가) 있습니다. 내 XML 파일이 299을 가지고있는 반면

  • 항목의 내 배열은 108 개 인덱스를 포함 :
    - (id) loadXMLbyURL : (NSString *) urlString 
    { 
        items = [[NSMutableArray alloc] init]; 
        NSURL *url = [NSURL URLWithString:urlString]; 
        NSData *data = [NSData dataWithContentsOfURL:url]; 
        parser = [[NSXMLParser alloc] initWithData:data]; 
        parser.delegate = self; 
        [parser parse]; 
        return self; 
    } 
    
    - (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
    { 
        currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    } 
    
    - (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
    { 
        if([elementName isEqualToString:@"item"]) currentItem = [Item alloc]; 
    } 
    
    - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
    { 
        if([elementName isEqualToString:@"name"]) [currentItem setName:currentNodeContent]; 
        if([elementName isEqualToString:@"title"]) [currentItem setTitle:currentNodeContent]; 
        if([elementName isEqualToString:@"city"]) [currentItem setCity:currentNodeContent]; 
        if([elementName isEqualToString:@"country"]) [currentItem setCountry:currentNodeContent]; 
        } 
        if([elementName isEqualToString:@"item"]) 
        { 
         [self.items addObject:currentItem]; 
         currentItem = nil; 
         currentNodeContent = nil; 
        } 
    } 
    

    그러나이 모든과

    , 나는이 문제가 :

    여기 내 XMLParser.m 파일입니다.

  • 내 항목 속성에 데이터가 없습니다 ... 로그에 인쇄하려고하면 모든 항목이 (null)입니다.

도와주세요!

답변

0

누구나 같은 문제가있는 경우 솔루션을 찾았습니다.

  • 모든 XML 파일을 검사하지 않는 문제는 XML 파일의 PCDATA 오류 때문이었습니다.
  • NSString에서 아무 것도 얻지 못하는 문제가이 스레드에서 해결되었습니다. NSXMLParser issue : don't get all data?