2012-05-02 10 views
0

私は単純なXMLファイルを持っています。私はちょうどユーザー名とパスワードを取得したい。しかし、それは結果を観察するためにnslogを使用したときに繰り返し値が生成されます。 XML構造は、ちょうどこのようなものである:NSXmlParserを使用してXMLファイルを解析する際に繰り返し値を取得

2012-05-02 19:47:27.620 DeliveryManagement [4364:11003]

Vincent 
ここ

<Login xmlns="http://tempuri.org/"> 
    <userName>Vincent</userName> 
    <password>string</password> 
    <status>OK</status> 
</Login> 



- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if ([elementName isEqualToString:@"userName"]) { 
     NSLog(@"Node is found correctly"); 
    } 
} 


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    if (!userNameString) { 
     userNameString=[[NSMutableString alloc]init]; 
    } 
    [userNameString appendString:string]; 
    NSLog(@"%@",userNameString); 
} 


- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
{ 
    NSInteger errorCode=[parseError code]; 
// NSLog(@"%d,%@",errorCode,[parseError localizedDescription]); 
} 


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementName isEqualToString:@"userName"]) { 
     userNameString=nil; 
    } 
} 

はのNSLogによって生成された結果であります

2012-05-02 19:47:27.620 DeliveryManagement [4364:11003]

2012-05-02 19:47:27.621 DeliveryManagement [4364:11003] 文字列 2012-05-02 19:47:27.622 DeliveryManagement [4364:11003] ストリング

2012-05-02 19:47:27.623 DeliveryManagement [4364:11003] ストリングOK 2012-05-02 19 :47:27.623 DeliveryManagement [4364:11003] ストリングOK

2012-05-02 19:47:27.624 DeliveryManagement [4364:11003] ストリングOK

2012-05-02午後07時47分:27.625 DeliveryManagement [4364:11003] st OKリング

2012-05-02 19:47:27.626 DeliveryManagement [4364:11003] ストリングOK

2012-05-02 19:47:27.626 DeliveryManagement [4364:11003] ストリングOK

2012-05-02 19:47:27.627 DeliveryManagement [4364:11003] 文字列 OK

2012-05-02 19:47:27.628 DeliveryManagement [4364:11003]ノードが正しく検出されました 2012-05-02 19:47:27.642 DeliveryManagement [4364:11003] 文字列が OK

+0

誰かがあなたを助ける前にXML文書を解析するコードを表示する必要があります。 – jonkroll

+0

申し訳ありませんが、XMLパーサーのコーディングを貼り付けました。 –

答えて

0
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
if ([elementName isEqualToString:@"userName"]) { 
    NSLog(@"Node is found correctly"); 
    if(userNameString == nil) 
     userNameString = [NSMutableString string]; 
    else 
     [userNameString setString:@""]; 
} 
else { 
    userNameString = nil; 
} 

} 


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 

[userNameString appendString:string]; 
if (userNameString) 
{ 
    userNameString = nil; 
} 
NSLog(@"%@",userNameString); 
} 

は、ちょうどこのコードを追加し、それが動作するはずです。 基本的に繰り返される値は、すべての値の後に '\ n'文字があるためです。私たちはuserNameString = nilを作成する必要があります。追加した後。 (NSXMLParser *)パーサーfoundCharacters:(NSStringの*)文字列

が、そのnilのように何も値が追加されません。この方法は、それは

  • (無効)パーサに入ります。それがあなたを助けてくれることを願っています..

+0

私はそれがうまくいけば... –

関連する問題