2011-02-14 57 views
0

我已經收到使用NSURLConnection的數據,並且我得到了以下字符串,它是字符串的XML格式。現在我想獲取字符串的狀態節點。我想在不使用XML解析的情況下獲取該字符串。如何在iPhone中解析XML中的特定字符串?

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 

    NSString *urlDataString = [[NSString alloc] initWithData:self.recieveData encoding:NSUTF8StringEncoding]; 

返回字符串:

<?xml version="1.0" encoding="Utf-8"?><blacksheep><status>Success</status></blacksheep> 

輸出:

Succeess 

請幫助我。

謝謝。

+0

你*有*解析XML,所以你可以提取''和''標籤中的字符串。你可能想說你不想這樣做*手動*。 – pyon

+0

@EduardoLeón,感謝您的評論。實際上,我收到了xml字符串,那麼如何使用NSXML解析器解析字符串?謝謝。 – Pugal

回答

3
NSString* str = @"<?xml version=\"1.0\" encoding=\"Utf-8\"?><blacksheep><status>Success</status></blacksheep>"; 
NSString* status = [[[[str componentsSeparatedByString: @"<status>"] objectAtIndex: 1] componentsSeparatedByString: @"</status>"] objectAtIndex: 0]; 

但要小心:這是短暫但不是很安全的方法。所以你最好添加一些額外的檢查。

編輯:更好的辦法是

NSString* status = @"Failed"; 
NSArray* arr = [str componentsSeparatedByString: @"<status>"]; 
if([arr count] > 1) { 
     status = [[[arr objectAtIndex: 1] componentsSeparatedByString: @"</status>"] objectAtIndex: 0]; 
} 
+0

+1,@Max,感謝您的回覆,您提到「這是短暫但不是很安全的方法」。如果我使用瞭解析,則需要一些時間來處理XML解析。所以我計劃避免XML解析。還有一點,在我的情況下,只有一個字符串會返回狀態。狀態字符串總是返回成功或失敗。那麼我可以在我的應用程序中使用該方法嗎?請指導我。謝謝 – Pugal

+0

是的,我認爲完整的XML解析對您而言太多了。 – Max

+0

如果XML解析對於他的目的來說太多了,那麼XML本身對於他的目的來說太多了,你不覺得嗎?爲什麼不發送一個字符('S'或'F')而不是一個完整的XML字符串?它浪費了較少的帶寬,其缺乏更可能成爲其申請的真正瓶頸。 – pyon