在Cocoa中parsingXML

今天我正在研究如何在Cocoa(用于桌面)中创build一个简单的XMLparsing器。 我正在考虑使用NSXMLParser来parsing数据,但我不太确定从哪里开始。 Web上的XML文件没有太多的数据,只是一个简单的列表,其中有一些东西需要保存到variables中。 有没有人有关于如何做到这一点的任何build议,因为在线文档没有太多的意义。

感谢您的帮助!

编辑为什么我想要创build一个XMLparsing器的原因是从服务器上的MYSQL数据库获取信息到客户端应用程序。 如果除XMLparsing器外还有其他更好的方法,请告诉我们!

这是如何工作的:

有一个名为NSXMLParser的类。 它被用来parsingXML文件。 但是,NSXMLParser是愚蠢的。 它只知道如何parsingXML,但它不知道应该如何处理所发现的信息。

input一个委托。 代表就像一个保姆。 由于XMLParser并不知道如何处理所发现的信息,因此它会就每一件事情向其委托人提问:“嘿!我开始parsing文档了!我应该做什么? “嘿,我find了一些CDATA,我该怎么办呢!” “嘿!我发现了另一个标签!” “嘿!我发现了一个结束标签!”等等。 所有这些“嘿!” 语句是委托方法,换句话说,它们是委托对象可以select实现的可选方法。 通常(但并非总是),创buildNSXMLParser的对象也是委托,但事实并非如此。

所以你可能有这样的东西:

NSXMLParser * parser = [[NSXMLParser alloc] initWithContentsOfURL:someURLToAnXMLFile]; [parser setDelegate:self]; [parser parse]; [parser release]; 

然后在同一个对象(自我)中,你可能有一些这样的方法:

 - (void)parserDidStartDocument:(NSXMLParser *)parser { //the parser started this document. what are you going to do? } - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { //the parser found an XML tag and is giving you some information about it //what are you going to do? } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //the parser found some characters inbetween an opening and closing tag //what are you going to do? } - (void)parserDidEndDocument:(NSXMLParser *)parser { //the parser finished. what are you going to do? } 

文档中列出了一大堆这些方法。 只需转到NSXMLParser类引用,它们都列在“委托方法”部分下。 一旦你掌握了它,NSXMLParser非常易于使用。 这是一个SAXparsing器 ,这意味着它是事件驱动的parsing器。 它发现的东西,它告诉你。