解析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"
)
我在做什么错?
与每一个循环中,您创建一个新的数组:
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]);
这有些作品。我最终得到两个不同的NSLog。一个只有第一个“链接”值的URL和一个都有。我还设置了NSLog(@“TheCountIs%i”,[linkarray count]);'和控制台返回: TheCountIs1 TheCountIs2 这是正常的吗? – user717452
当然:在每一步你都要加一个物体,所以计数增加一。 – vikingosegundo
看到我的编辑更容易混淆记录 – vikingosegundo
我无法拒绝张贴链接到我的自动化XM L解析库。没有递归,保持简单:http://ceasyxml.googlecode.com – v1Axvw