使用NSXmlParser解析XML文件时获取重复值
我有一个简单的XML文件。我只想获取用户名和密码。但是当我使用nslog观察结果时,它会产生重复的值。 XML结构仅是这样的:使用NSXmlParser解析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 DeliveryManagement [4364:11003]
Vincent
2012-05-02 19:47:27.620 DeliveryManagement [4364:11003]
2012-05-02 19:47:27.621 DeliveryManagement [4364:11003] string 2012-05-02 19:47:27.622 DeliveryManagement [4364:11003] 串
2012-05-02 19:47:27.623 DeliveryManagement [4364:11003] 串 行 2012-05-02 19 :47:27.623 DeliveryManagement [4364:11003] 串 行
2012-05-02 19:47:27.624 DeliveryManagement [4364:11003] 串 行
2012-05-02 19时47分:27.625 DeliveryManagement [4364:11003] st环 行
2012-05-02 19:47:27.626 DeliveryManagement [4364:11003] 串 行
2012-05-02 19:47:27.626 DeliveryManagement [4364:11003] 串 行
2012-05-02 19:47:27.627 DeliveryManagement [4364:11003] 串 行
2012-05-02 19:47:27.628 DeliveryManagement [4364:11003]节点被正确地发现 2012-05-02 19:47:27.642 DeliveryManagement [4364:11003] 串 OK
- (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 *)字符串
但其零所以没有价值附加。希望它可以帮助你..
plz让我知道如果它为你工作... thnx –
在任何人能够帮助你之前,你需要显示解析XML文档的代码。 – jonkroll
对不起,我粘贴了XML解析器的编码。 –