我正在尝试解析一个 XML 文件TBXML
并将这些值放入多维NSMutableArray
中,但问题是这些值没有被添加到数组中,如果我输出这些值,那么它会返回null
and 0
。
这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[self downloadAndParseXml:@"http://www.w3schools.com/XML/note.xml"];
// RETURNS 0
NSLog(@"weatherArray count: %d", [weatherArray count]);
// RETURNS NULL
NSLog(@"weatherArray value: %@", weatherArray[0][0]);
}
- (void)downloadAndParseXml:(NSString *)xmlUrl
{
// Allocating the array
weatherArray = [NSMutableArray array];
TBXMLSuccessBlock sBlock = ^(TBXML *tbxmlDocument) {
if (tbxmlDocument.rootXMLElement)
[self fillArrayWithXmlContents:tbxmlDocument.rootXMLElement];
};
TBXMLFailureBlock fBlock = ^(TBXML *tbxmlDocument, NSError *error) {
NSLog(@"Failureblock: %@\n%@", [error localizedDescription], [error userInfo]);
};
[TBXML newTBXMLWithURL:[NSURL URLWithString:xmlUrl] success:sBlock failure:fBlock];
}
- (void)fillArrayWithXmlContents:(TBXMLElement *)element {
do {
if (element->firstChild)
[self fillArrayWithXmlContents:element->firstChild];
if ([[TBXML elementName:element] isEqualToString:@"note"]) {
// Adding values into the multidimensional array
[weatherArray addObject:[NSArray arrayWithObjects:
[TBXML textForElement:[TBXML childElementNamed:@"to" parentElement:element]],
[TBXML textForElement:[TBXML childElementNamed:@"from" parentElement:element]],
[TBXML textForElement:[TBXML childElementNamed:@"heading" parentElement:element]],
[TBXML textForElement:[TBXML childElementNamed:@"body" parentElement:element]], NULL]];
// Correct value is getting logged
NSLog(@"weatherArray value: %@", weatherArray[0][0]);
}
} while ((element = element->nextSibling));
}