0

我正在使用一种NSXMLParserDelegate方法从 XML 文件中获取数据,但我无法获取我想要的数据。xml文件是这样的:

<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>

从此文件中,我想获取属性x,的值y,并且仅获取属性等于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 (idvalue==@"PR")
      {
          NSString *xvalue = [attributeDict objectForKey:@"x"];
          NSLog(@"%@",xvalue);
          NSString *yvalue = [attributeDict objectForKey:@"y"];
          NSLog(@"%@",yvalue);
          NSString *svalue = [attributeDict objectForKey:@"s"];
          NSLog(@"%@",svalue);   
      }
   }

我会得到一个像这样的日志:

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

所有元素的xy和的值。s如何仅获取属性 ID="PR" 的元素的值?我希望有人能给我一个理由,或者如果你能指出我最终解决这个问题的方向,因为它成为背后的真正痛苦。

4

1 回答 1

0

本质上,正如马蒂亚斯在评论中指出的那样,您想使用NSString'-isEqualToString方法。这样做的原因是实际上只是比较两个指针idvalue==@"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);
}
于 2012-09-04T21:11:29.137 回答