我有一个包含这样的行的xml文件:
<Country ID="" Name="Italy" />
<City ID="" Name="Rome" />
<Place ID="" Name="Colosseum">
但是当我解析它时,元素Country或City或Place为空(换行符)
我的代码是:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqual:@"Country"]) {
NSLog(@"Country %@", string);
}
}
感谢任何帮助。
谢谢, 最大
答案 0 :(得分:2)
您在xml中看到的值是元素属性,而不是元素数据。所以它不会出现在'foundCharacters'方法中。 您必须从'didStartElement'方法中的属性字典中获取属性值:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([currentElement isEqual:@"Country"]) {
NSLog(@"Country %@", [attributeDict objectForKey:@"Name"]);
}
}
答案 1 :(得分:1)
使用如下解析器方法:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if(currentKey){
if(!currentStringValue){
currentStringValue = [[NSMutableString alloc] initWithCapacity:200];
}
[currentStringValue appendString:string];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([currentElement isEqual:@"Country"]) {
NSLog(@"Country %@", [attributeDict objectForKey:@"Name"]);
}
}
希望它对你有所帮助。
如有任何困难,请告诉我。