0

NSXMLParserDelegateXMLファイルからデータを取得するメソッドを使用していますが、必要なデータを取得できません。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が。に等しいポイント要素のみを取得します。値をログに記録すると、が表示されます。ysid"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

x、、yおよびsすべての要素の値。属性ID="PR"を持つ要素の値のみを取得するにはどうすればよいですか?誰かが私に理由を教えてくれることを願っています。あるいは、この問題が背後で本当に苦痛になっているので、最終的にこの問題を解決する方向に私を向けることができれば。

4

1 に答える 1

0

基本的に、マティアスがコメントで指摘したように、あなたはNSString-isEqualToString方法を使いたいと思うでしょう。これは、実際には2つのポインタの内容ではなく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 に答える