2011-06-21 4 views
0

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

それはあなたに役立つことを願っています。

問題が発生した場合はお知らせください。