所以我正在尝试为iOS开发基于xml的应用程序。我从Apple的文档和谷歌的教程中学习了NSXMLParser,但我遇到了麻烦。所以我的xml文件有这样的格式
<firstElement>
<secondElement index="1" name="John">
<thirdElement index="1" text="I live in the United States" />
<thirdElement index="2" text="I live in the United Kingdom" />
<thirdElement index="3" text="I live in Germany" />
</secondElement>
</firstElement>
我需要基本上获取text属性中的值,然后将它们分配给表视图。我面临的主要问题实际上是在text属性中获取数据并将其存储在Array中。因此,对于NSXMLParser委托方法
,我的Obj-C代码就是这样的-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict {
if ([elementName isEqualToString:@"thirdElement"]) {
self.dictTempDataStorage = [[NSMutableDictionary alloc] init];
}
NSString *thisIndex = [attributeDict objectForKey:@"text"];
if (thisIndex)
self.currentElement = thisIndex;
}
我将文本“我住在美国”作为thisIndex的值,然后将其分配给self.currentElement。基本上在这之后我就失去了如何实现didEndElement和foundCharacters委托方法。
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"thirdElement"]) {
[self.arrThirdElementData addObject:[[NSDictionary alloc] initWithDictionary:self.dictTempDataStorage]];
NSLog(@"%@", arrThirdElementData);
}
// Clear the mutable string.
[self.foundValue setString:@""];
}
我很确定我已经完全错了,有人可以帮我正确实施。我不知道如何在didEndElement方法中提取属性并将它们存储在Array中。所以当我尝试NSLog时,这个数组很自然地返回空。
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
// Store the found characters if only we're interested in the current element.
if ([self.currentElement isEqualToString:@"text"])
{
if (![string isEqualToString:@"\n"]) {
[self.foundValue appendString:string];
}
}
}
非常感谢任何帮助。谢谢:))