我正在尝试通过解析通过Websevice返回的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形式记录在日志中的字符串。这不是问题。但是,为什么会出现这种情况。如何获得正确的值而不是反斜杠。
  • 我在做什么错?
  • 该如何解决?
  • 最佳答案

    由于每个标签内容可以多次调用foundCharacters,因此这是不正确的:

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

    不应将strin分配给rValue,而应该附加它。当前,实际值(例如@"BusinessName")已得到识别和分配,但是@"\n\n\n"延续字符串出现在同一标签内,并在首先找到的值之上分配。

    rValue设置为NSMutableString,然后使用appendString,如下所示:
    -(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)strin{
        if (isTag) {
            [rValue appendString:strin];
        }
    }
    

    请注意,wold内容的末尾也带有\n。如果不需要这些结尾字符,则需要手动删除它们,例如,通过调用stringByTrimmingCharactersInSet:并将其[NSCharacterSet whitespaceAndNewlineCharacterSet]传递为参数:
    NSString *finalValue = [rValue stringByTrimmingCharactersInSet:
        [NSCharacterSet whitespaceAndNewlineCharacterSet]
    ];
    

    关于ios - 从xml服务获取值时出现\n而不是字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19703039/

    10-10 01:12
    查看更多