2012-05-23 2 views
0

XML을 구문 분석하고 XML의 한 요소에서 NSArray로 URL을 저장하려고합니다. 여기 내 코드는 지금까지입니다 다음 NSLog를 들어XML 구문 분석 NSArray에 저장

NSURL *url = [NSURL URLWithString:@"http://www.316apps.com/LakesideDocs/podcasttrial.xml"]; 

    NSData *xmlData = [[NSMutableData alloc] initWithContentsOfURL:url]; 
    NSError *error; 
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData 
                  options:0 error:&error]; 

    NSArray *channels = [doc.rootElement elementsForName:@"channel"]; 
    for (GDataXMLElement *channel in channels) {    


     NSArray *items = [channel elementsForName:@"item"]; 
     for (GDataXMLElement *item in items) { 

      NSString *articlePoint = [item valueForChild:@"link"]; 
      NSArray *linkarray = [[NSArray alloc] initWithObjects:articlePoint, nil]; 

      NSLog(@"%@", linkarray); 

     } 

    } 

내가 기대 :

TabBarSample[40191:fb03] (
    (
    "http://domain.com/image1.jpg" 
), 
(
"http://domain.com/image2.jpg" 
) 
) 

하지만 내가 얻을 :

TabBarSample[40191:fb03] (
"http://domain.com/image1.jpg" 
) 
TabBarSample[40191:fb03] (
"http://domain.com/image2.jpg" 
) 

내가 잘못을하고있는 중이 야 뭐? 증가 배열에 대한 혼동되는 경우

NSArray *linkarray = [[NSArray alloc] initWithObjects:articlePoint, nil]; 

대신 당신이 llop의 외부에있는 NSMutableArray를 원하는 모든 루프 동안

NSMutableArray *linkarray = [NSMutableArray array]; 
    NSArray *items = [channel elementsForName:@"item"]; 
    for (GDataXMLElement *item in items) { 

     NSString *articlePoint = [item valueForChild:@"link"]; 
     [linkarray addObject:articlePoint]; 

     NSLog(@"%@", linkarray); 

    } 

을 개체를 추가 : 새 배열을 만들 때마다 루프

+0

자동화된 XM에 대한 링크 게시를 거부 할 수 없습니다 L 파싱 라이브러리. 재귀가 없으며 간단하게 유지하십시오. http://ceasyxml.googlecode.com – v1Axvw

답변

2

당신은 for 루프 뒤에 NSLog를 두어야합니다 :

NSMutableArray *linkarray = [NSMutableArray array]; 
    NSArray *items = [channel elementsForName:@"item"]; 
    for (GDataXMLElement *item in items) { 

     NSString *articlePoint = [item valueForChild:@"link"]; 
     [linkarray addObject:articlePoint]; 
    } 

    NSLog(@"%@", linkarray); 
    NSLog(@"count: %d", [linkarray count]); 
+0

다소 효과가 있습니다. 이제 두 개의 다른 NSLog를 얻게됩니다. 첫 번째 '링크'값 URL이있는 URL과 두 URL이 모두있는 URL 또한 NSLog (@ "TheCountIs % i", [linkarray count]);를 설정하고 콘솔이 반환했습니다. TheCountIs1 TheCountIs2 정상입니까? – user717452

+0

확실 : 모든 단계에서 하나의 개체를 추가하므로 개수가 하나씩 증가합니다. – vikingosegundo

+0

덜 혼란스러운 로깅을 위해 제 편집을보십시오 – vikingosegundo