2013-10-31 88 views
1

我试图通过解析通过web服务返回的xml数据从服务器获取值。 n从xml服务获取值时出现字符串而不是字符串

用于解析代码低于

-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    rValue= @""; 
    isTag = FALSE; 
    if ([elementName caseInsensitiveCompare:@"BusinessName"] == NSOrderedSame) 
     isTag=YES; 

} 


-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{ 
if (isTag) { 
     rValue =strin; 
    } 
} 

-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 

    if([elementName caseInsensitiveCompare:@"BusinessName"] == NSOrderedSame) 
     [myarray addObject:rValue]; 
} 

-(void) parserDidEndDocument:(NSXMLParser *)parser 
{ 
    NSLog(@"%@",myarray); 
} 

rValue是一个静态字符串;

打印我的数组后,它看起来像这样,

(
"Book Store", 
"Birch river grill", 
PIC, 
"Drink Juice", 
"Cofee Cafee", 
"Diag Block", 
"Delici Store", 
"\n\n", 
"Spoon Fork", 
"\n", 
"\n\n", 
"\n\n\n", 
Allow, 
"Enjoy Traveling", 
"Grwing Three", 
"\n", 
"\n\n" 
) 

为什么\ N(反斜线)是存在的,而不是值(BUSINESSNAME)的? 我检查了Web服务在浏览器中,值正确返回 。完全有17个元素返回,你可以看到一些字符串打印在日志中没有双重qoutes。这不是问题。但是,为什么会出现这种情况。我怎样才能得到正确的值而不是反斜杠。

  • 我在做什么错?
  • 如何解决这个问题?

回答

4

由于foundCharacters可以被称为每一个标签的内容多次,这是不正确的:

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{ 
    if (isTag) { 
     rValue =strin; 
    } 
} 

不是分配strinrValue,你应该追加它。目前,实际值(例如,@"BusinessName")被识别并分配,但@"\n\n\n"连续字符串出现在同一个标​​记内,并被分配在首先找到的值的顶部。

rValueNSMutableString,并使用appendString,像这样:

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{ 
    if (isTag) { 
     [rValue appendString:strin]; 
    } 
} 

注意,内容沃尔德在年底有\n S以及。如果您不需要这些尾随字符,你需要手动删除它们,例如,通过调用stringByTrimmingCharactersInSet:,并将其传递[NSCharacterSet whitespaceAndNewlineCharacterSet]作为参数:

NSString *finalValue = [rValue stringByTrimmingCharactersInSet: 
    [NSCharacterSet whitespaceAndNewlineCharacterSet] 
]; 
+0

现在我越来越像数组,'“书店\ n“, ”桦树河烤架\ n“, ”PIC \ n“, ”果汁\ n“'如何解决这个问题? – NAZIK

+0

ie,如何防止附加字符串与'\ n'? PL建议。 – NAZIK

+0

有什么建议吗? – NAZIK