2013-10-31 141 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