我有一个需要解析的XML文件。 我已经解析过一个XML,但它更简单。由于此文件具有相似的标签,因此我无法弄清楚如何解析它。解析具有相同标记的XML文件
的xml文件看起来是这样的:
<resource classname="Quote">
<field name="name">USD/KRW</field>
<field name="price">1104.319946</field>
<field name="symbol">KRW=X</field>
<field name="ts">1350544190</field>
<field name="type">currency</field>
<field name="utctime">2012-10-18T07:09:50+0000</field>
<field name="volume">-56144</field>
</resource>
我想要得到的价格领域,并将其添加到一个数组。我尝试了一些在线示例中的代码,但它显示了所有字段的值,我只需要price
字段。
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([[attributeDict objectForKey:@"name"] isEqualToString:@"price"])
{
currencyValuesString = [[NSMutableString alloc]init];
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementname isEqualToString:@"field"])
{
[currencyValuesArray addObject:currencyValuesString];
}
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currencyValuesString = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
感谢Ali的工作正常,并感谢您的建议。 – ichanduu
我应该怎么做,如果我想另一个字段像name.should我采取另一个字符串和数组? – ichanduu
您可以为每个字段设置不同的可变字符串,但这不会非常有效。你最好在实例变量中存储当前正在分析的字段。做到这一点的方式取决于你:要么为你管理的每个字段声明一个类型为“enum”的值,并且要使用这个枚举类型的伊娃,根据name属性在'didStartElement'中设置它的值,然后在你的'didEndElement'中的这个ivar上'switch'来做不同的事情,这取决于当前正在处理哪个字段。 – AliSoftware