2011-06-21 34 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"]); 
     } 
    } 

希望這將有助於你。

如有任何困難,請通知我。