从XML NSData表示中获取NSDictionary的快捷方法?

时间:2010-06-17 11:01:17

标签: iphone xml nsxmlparser

我已将XML文件作为NSData加载到内存中,并使用NSXMLParser解析元素。虽然它有效,但它是一个非常丑陋且难以维护的代码,因为有大约150种不同的元素需要解析。

我知道有很好的第三方解决方案,但我希望将其与iPhone SDK保持一致,以便实践和娱乐。

所以我想:为什么不将该XML文件转换为NSDictionary?有了这个,我可以使用快速枚举来检查元素。

或者是否只是使用NSXMLParser立即解析和处理XML所需的相同数量的丑陋代码?

我是否会为XML中的每个找到的节点构建一个NSDictionary并创建一个包含整个结构和数据的巨大的节点?或者有更简单的方法吗?

4 个答案:

答案 0 :(得分:1)

那里有很多解析器(例如XPathQuery,TouchXML等)。

答案 1 :(得分:1)

NSDictionary无法读取任何随机xml格式。它只能以plist格式的特定格式读取xml。

plist实际上早于xml,而当前的plist格式只是原始的xml版本。名称plist是“属性列表”的缩写,因为文件定义了类的实例的属性。因此,文件中的所有xml标记都必须定义实现NSCoder协议的类实例的元素。

所以,是的,如果你从任意xml开始,你必须费力地解析它以将其转换为NSDictionary或其他类。

除了学习练习之外,我不会出于任何原因从头开始编写解析器。每个xml格式都需要不同的解析器。最好使用现有的解析器,以便80%的工作都为您完成。在一个真实的项目中,无论如何你最终都会这样做。

答案 2 :(得分:1)

你好dtWatchMyProfile, 您应该更好地使用NSString XML格式。对于这种格式,我有一个轻松的lib转换

http://bcaccinolo.wordpress.com/2010/11/14/xml-to-nsdictionary-converter/

我希望它可能会有所帮助。

干杯, 贝努瓦

答案 3 :(得分:0)