题
我们想要获取XML数据并将其转换为NSDictionary对象,但我们不希望手动迭代XML。是否有捷径可寻?你是如何为你的iPhone应用程序做网络服务的?
解决方案
如果您可以控制XML输出,您可以尝试创建一个属性列表,然后可以使用-dictionaryWithContentsOfURL将其读入字典:(尽管更好的异步方式是使用NSURLConnection获取数据然后转换数据在NSString上使用-propertyList方法)。您可以在此处找到有关属性列表的更多信息: http:// developer .apple.com /文档/可可/概念/ PropertyLists /介绍/ chapter_1_section_1.html
当然,最好的解决方案是使用RESTful客户端并使用NSURLConnection的组合来获取/发送数据和TouchXML类( http://code.google.com/p/touchcode/wiki/TouchXML )来解析数据,尽管这需要更多工作才能将数据放入字典。当然,如果它们将成为系统中的主要数据对象,那么您真的希望使用自定义类或SQLite来存储数据,因为它为您提供了测试应用程序的可靠性,而不是字典。
其他提示
如果您可以控制服务器输出,请尝试使用plist。否则,您将无法解析XML(如果服务器可以执行此操作,则会使用JSON),但您可以使用框架。请参阅的答案这个问题。
此外,这里有一个很好的概述如何在iPhone上做RESTful客户端:
https:/ /developer.apple.com/webapps/articles/creatingrestfulclients.html
您可以以JSON格式返回数据。有许多可用于iPhone的开源JSON解析器(TouchJSON是其中之一)。
还有另一个名为NSPropertyListSerialization的类可以从数据中获取字典。
您可以使用收到的数据执行此类操作
NSDictionary * propertyList;
NSPropertyListFormat格式;
NSString * errorStr;
propertyList = [NSPropertyListSerialization
propertyListFromData:receivedData结果
mutabilityOption:NSPropertyListImmutable
格式:&格式
errorDescription:& errorStr];
抱歉,不知道这里使用了哪些标签来格式化代码!