解析XML存储到NSArray中

问题描述:

我试图解析一个XML并将XML的一个元素的URL存储到一个NSArray中。这是我到目前为止的代码:解析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); 

     } 

    } 

有关的NSLog我希望:

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" 
) 

我在做什么错?

+0

我无法拒绝张贴链接到我的自动化XM L解析库。没有递归,保持简单:http://ceasyxml.googlecode.com – v1Axvw

与每一个循环中,您创建一个新的数组:

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); 

    } 

如果增加阵列是混淆了你,你应该把NSLog后的for循环:

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和一个都有。我还设置了NSLog(@“TheCountIs%i”,[linkarray count]);'和控制台返回: TheCountIs1 TheCountIs2 这是正常的吗? – user717452

+0

当然:在每一步你都要加一个物体,所以计数增加一。 – vikingosegundo

+0

看到我的编辑更容易混淆记录 – vikingosegundo