2012-12-10 52 views
0

我試圖獲取根元素。基於我想要觸發一個函數的根元素。nsxmlparser讀取根元素

對於〔實施例的XML看起來是這樣的:

<State> 
    <Name>California</Name> 
    <Time>CA Time.</Time> 
    <Time>CA Time2.</Time> 
    <Notes>This is a note for California</Notes> 
    </State> 

和下一個進入的XML看起來是這樣的:

<country> 
    <Name>USA</Name> 
    <Time>west coast Time.</Time> 
    </country> 

所以基於根元素我想觸發正確的函數上。我正在使用當前的NSXmlparser委託方法。

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

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName; 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; 

但似乎它跳過了根元素。我是否錯過了任何可以首先獲得根元素的方法?

回答

4

檢查了這一點:

- (void)parser:(NSXMLParser *)parser 
didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
attributes:(NSDictionary *)attributeDict 
{  
    currentKey = nil; 
    [currentStringValue release]; 
    currentStringValue = nil; 
    if([elementName isEqualToString:@"State"]){ 
     // Here you got the your root... 
    } 
} 

- (void)parser:(NSXMLParser *)parser 
foundCharacters:(NSString *)string 
{ 
    if(currentKey){ 
     if(!currentStringValue){ // Here you got the contents... 
      // Store them somewhere in case you need them... 
      currentStringValue = [[NSMutableString alloc] initWithCapacity:200]; 
     } 
     [currentStringValue appendString:string]; 
    } 
} 

-(void)parser:(NSXMLParser *)parser 
didEndElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
{ 
    if([elementName isEqualToString:@"State"]){ 
     // Do what you want here... 
     return; 
    } 
} 

這裏是蘋果的鏈接,務必閱讀文檔和他們的代碼示例... http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NSXML_Concepts/NSXML.html#//apple_ref/doc/uid/TP40001263-SW1

我不是100%肯定,但我認爲它的工作原理...

因此,您可以對縣進行更改。

+0

謝謝我檢查它! –