2012-09-04 10 views
0

我正在使用NSXMLParserDelegate方法從 XML文件中獲取數據,但我無法獲得我想要的數據。 XML文件是這樣的:Xcode NSXMLParser通過選擇多個鍵的數據

<faces> 
    <bounds x='70' y='250' width='438' height='438'/> 
    <right-eye x='208' y='424'/> 
    <left-eye x='368' y='426'/> 
    <features s-avg='0.82' s-min='0.51' s-max='0.92'> 
    <point id='PR' x='223' y='425' s='0.76'/> 
    <point id='PL' x='362' y='424' s='0.91'/> 
</faces> 

從這個文件我想要得到的值屬性xy,並且s只能用於屬性id等於"PR"點元素。 記錄該值應顯示x=223

這是我的分析過程:

-(void) parser:(NSXMLParser *) parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName attributes:(NSDictionary *) attributeDict { 
    if ([elementName isEqualToString:@"point"]) 
    { 
     NSString *idvalue = [attributeDict objectForKey:@"id"]; 
     if ([email protected]"PR") 
     { 
      NSString *xvalue = [attributeDict objectForKey:@"x"]; 
      NSLog(@"%@",xvalue); 
      NSString *yvalue = [attributeDict objectForKey:@"y"]; 
      NSLog(@"%@",yvalue); 
      NSString *svalue = [attributeDict objectForKey:@"s"]; 
      NSLog(@"%@",svalue); 
     } 
    } 

我會得到一個日誌,如:中xy,並且s所有元素

X=223 X=362 Y=425 Y=424 S=0.76 S=0.91 

值。 我如何才能獲得僅具有屬性ID =「PR」的元素的值? 我希望有人能給我一個理由,爲什麼或者如果你能指出我的方向,最終解決這個問題,因爲它成爲背後真正的痛苦。

+1

嘗試'如果([idvalue isEqualToString:@ 「PR」])' –

回答

0

本質上,正如Matthias在評論中指出的那樣,您希望使用NSString-isEqualToString方法。原因是[email protected]"PR"實際上只是比較兩個NSString指針的數值,而不是它們的內容。 -isEqualToString方法實際上比較了由所述指針引用的字符串的內容。

用作:

NSString *idvalue = [attributeDict objectForKey:@"id"]; 
if ([idvalue isEqualToString:@"PR"]) 
{ 
    NSString *xvalue = [attributeDict objectForKey:@"x"]; 
    NSLog(@"%@",xvalue); 
    NSString *yvalue = [attributeDict objectForKey:@"y"]; 
    NSLog(@"%@",yvalue); 
    NSString *svalue = [attributeDict objectForKey:@"s"]; 
    NSLog(@"%@",svalue); 
} 
+0

三江源這麼多!這工作完美! – user1647252

+0

@ user1647252很高興爲您提供幫助。如果此答案回答您的問題,則應將其標記爲已接受。 – NJones