単純な XML ファイルがあります。ユーザー名とパスワードを取得したいだけです。しかし、結果を観察するためにnslogを使用していたときに、繰り返し値が生成されました。XML 構造は次のようになります。
<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 配信管理[4364:11003]
Vincent
2012-05-02 19:47:27.620 配信管理[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 19:47:27.625 DeliveryManagement[4364:11003] 文字列 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