2012-11-30 83 views
1

我有這個字符串:提取物價值

<?xml version="1.0" encoding="utf-8"?> 
<NewDataSet> 
    <Table> 
    <CITY>Jupiter</CITY> 
    <STATE>FL</STATE> 
    <ZIP>33477</ZIP> 
    <AREA_CODE>561</AREA_CODE> 
    <TIME_ZONE>E</TIME_ZONE> 
    </Table> 
</NewDataSet> 

我只是想從它搶市,在這種情況下:木星

我不希望使用一個XML解析器 - 有沒有簡單的方法來做到這一點?

+0

如果你想提取XML值,那麼你_do_要使用XML解析器 - 這_is_簡單方法來做到這一點。合適的解析器會爲你處理各種複雜問題(例如,'Köln'和'K ö ln'在XML中的價值完全相同),爲什麼重新發明這個方法。 –

+0

看起來像一大堆額外的代碼,複雜性,甚至可能還有一個額外的解析器庫來從字符串中提取單個值,就像下面的答案一樣。 – Slee

+1

我想你可以逃脫字符串操作,如果它是你自己生成的XML,並且你知道確切的格式並且知道它不會使用字符引用,DTD,CDATA部分等。但是正確地解析XML [不必是複雜的](http://nfarina.com/post/2843708636/a-lightweight-xml-parser-for-ios)。 –

回答

4

我建議考慮使用XML解析器,但在這裏你去反正:

NSArray *array = [yourXMLString componentsSeparatedByString:@"CITY"]; 
NSString *city = [[array objectAtIndex:1] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"></"]]; 
+0

只有兩行:) –

0
NSString* str=[[NSString alloc]initWithContentsOfFile: FILENAME encoding: NSUTF8StringEncoding error: nil]; 
    NSLog(@"%@",str); 
    NSRange range1= [str rangeOfString: @"<CITY>"]; 
    NSRange range2= [str rangeOfString: @"</CITY>"]; 
    NSUInteger location= range1.location+range1.length; 
    NSUInteger length= range2.location-range1.location-range1.length; 
    NSString* substr= [str substringWithRange: NSMakeRange(location,length)]; 
    NSLog(@"%@",substr);