2011-06-21 35 views
0

我有一些像这样的行的XML文件:的NSXMLParser问题

<Country ID="" Name="Italy" /> 
    <City ID="" Name="Rome" /> 
    <Place ID="" Name="Colosseum"> 

但是当我分析它的元素国家或城市或地方是空的(换行)

我的代码是:

 
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
     if ([currentElement isEqual:@"Country"]) { 
      NSLog(@"Country %@", string); 
     } 
    } 

任何帮助表示赞赏。

感谢, 最大

回答

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"]); 
    } 
} 
+0

谢谢,它的工作。 – masgar

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"]); 
     } 
    } 

希望这将有助于你。

如有任何困难,请通知我。