Objective C解析xml文件中的属性

时间:2016-04-04 21:39:41

标签: objective-c xml nsxmlparser

所以我正在尝试为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];
    }
}

}

非常感谢任何帮助。谢谢:))

0 个答案:

没有答案