gpt4 book ai didi

objective-c - 解析 XML 存储到 NSArray

转载 作者:行者123 更新时间:2023-11-28 22:56:20 24 4
gpt4 key购买 nike

我正在尝试解析 XML 并将 URL 从 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"
)

我做错了什么?

最佳答案

每次循环都会创建一个新数组:

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

关于objective-c - 解析 XML 存储到 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com