2010-06-03 10 views
3

嘿傢伙,想知道我如何使用NSXML分析器。 因此,可以說給我有一個元素簡單的XML文件中像 1000年1月1日 14點15分16秒 在iPhone上的NSXMLParser,我如何使用它給一個XML文件(newb在這裏:)

我怎麼能使用的NSXMLParser解析XML文件(及其對本地順便說一句,桌面),檢查每個元素並將它們中的每一個存儲在一個數組中,以便稍後顯示/使用?

我一直在尋找通過一些關於它的資料,我絕對有關於如何使用的解析器 我知道有3種方法不知道(或更多,請糾正我,如果我錯了),可以覆蓋 - 。 .etc didStartElement - ..等等didEndElement - ..等foundCharacters

回答

4

最簡單的事情就是做這樣的事情:

NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:<yourNSData>]; 
[xmlParser setDelegate:self]; 
[xmlParser parse]; 

注意setDelegate:被委託設置爲 '自我',意義當前對象。因此,在這個對象中,你需要實現你在問題中提到的委託方法。

所以在你的代碼進一步下降,粘貼在:

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

     NSLog(@"I just found a start tag for %@",elementName); 
     if ([elementName isEqualToString:@"employee"]){ 
     // then the parser has just seen an <employee> opening tag 
     }   
    } 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
NSLog(@"the parser just found this text in a tag:%@",string); 
} 

等等,等等

這是一個有點困難,當你想要做的事等設定的變量一些變量的值,但通常使用類變量caleld完成,如「BOOL inEmployeeTag」,您在didStartElement:方法中設置爲true(是),在didEndElement:方法中設爲false - 然後在foundCharacters方法中檢查它的值。如果是,則將var分配給字符串的值,如果不是,則不要。

richard

相關問題