2012-08-27 86 views
1

此問題用於在xcode中操縱NSString。從NSString解析XML以獲取值

我有一個XML文本字符串,從我看起來像這樣的

<current temperature="73" day="Mon" humidity="59" windspeed="10"></current> 

我怎樣才能從這個字符串得到個人價值和把它們放在我的NSString變量網絡獲得?

例如

NSString *tempStr = ?? 
NSString *dayStr = ?? 
NSString *windspeedStr = ?? 
+1

也許你應該嘗試實現一個XML解析器來完成這項工作? –

+2

使用解析器如RaptureXML用於正確解析XML。掃描儀和正則表達式不是此類任務的首選武器。 – Till

回答

2

首先,按照RaptureXML project site中所述,下載RaptureXML並在其中包含RaptureXML。

對於解析單個給定的行,請使用以下代碼片段 - 您的輸入作爲inXmlString傳遞;

//transform string into an XML DOM 
RXMLElement *rootNode = [RXMLElement elementFromXMLString:inXmlString 
              withEncoding:NSUTF8StringEncoding]; 
if (rootNode == nil || ![rootNode isValid]) 
{ 
    //do something, we failed! 
} 
else 
{ 
    NSString *temperature = [rootNode attribute:@"temperature"]; 
    NSString *day = [rootNode attribute:@"day"]; 
    NSString *windspeed = [rootNode attribute:@"windspeed"]; 
} 
+0

感謝您的指針 –

-2

基本思想是使用NSString方法componentsSeparatedByString:解析出你想要的數據。您可能需要做更多的工作才能完全適合您的場景。

NSArray* paArray1= [pstrXMLString componentsSeparatedByString:@" "]; 
temlStr= [[[paArray1 objectAtIndex:1] componentsSeparatedByString:@"="] objectAtIndex:1]; 
dayStr= [[[paArray1 objectAtIndex:2] componentsSeparatedByString:@"="] objectAtIndex:1]; 
windspeedStr= [[[paArray1 objectAtIndex:3] componentsSeparatedByString:@"="] objectAtIndex:1]; 
+1

只要連接的Web服務決定更改參數順序,即使這個答案很危險,不應該遵循,但我仍然沒有降低它的可行性,因此這會失敗。 – Till

+0

我看不到你在做這樣的檢查...... – Till

+0

標記你的答案是有效的。我的XML永遠不會改變,因此你的觀點是有效的。我對它進行了排名。 –