2012-04-26 15 views
1

我有一個XML文件,我需要計算元素在Objective-C中出現的次數。我應該怎麼做?在xml中使用目標c計算元素

<?xml version="1.0" encoding="ISO-8859-1"?> 

<residents> 
    <resident id="1"> 
     <name> 
      <first>David</first> 
      <last>Dollar</last> 
     </name> 
    </resident> 

    <resident id="2"> 
     <name> 
      <first>Michael</first> 
      <last>Nipp</last> 
     </name> 
    </resident> 

等等

+1

您使用的是什麼xml讀取器? – Manuel 2012-04-26 20:29:24

+0

我正在使用NSXMLParser。我需要代碼來計算元素出現的次數。 – 2012-04-26 20:34:37

+0

對不起,我從來沒有真正使用NSXMLParser,因爲我發現TBXML更容易理解和使用。 – Manuel 2012-04-26 20:37:17

回答

1

我會設置你的類作爲解析器的代表,那麼這個類將收到解析事件,如parser:didStartElement:parser:foundCharacters:parser:didEndElement:

self.parser = [[NSXMLParser alloc] initWithData:xmlData]; 
[self.parser setDelegate:self]; 
[self.parser parse]; 

我會在您的解析器委託中創建一個count變量。只要找到元素,就會在解析器委託上調用didStartElement:函數。檢查它是否是「常駐」元素,如果是,則增加計數。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 

    if ([elementName isEqualToString:@"resident"]) { 

     self.count += 1; 

    } 
} 
+0

我對此很新,這可能是一個愚蠢的問題,但是......我在哪裏放置代碼?即。 self.parser = [[NSXMLParser alloc] ... – 2012-04-30 17:43:34

+0

你可以把代碼放在你的視圖控制器中,初始化可以在viewDidLoad方法中發生。 – 2012-05-20 07:31:32