Iphone:对于这个特定的问题,SAX或DOM更好吗?

时间:2011-06-20 13:09:05

标签: iphone objective-c xml dom sax

我的Iphone与我的SOAP Web服务进行通信。

我的XML中有一份问卷,其中包括问题,答案以及一些UI信息的选择等等。因此,当用户使用IPhone输入一组问题的值并将它们再次发送回Web服务时,服务将向该XML添加新的未解答的问题。

因此,与Web服务的对话以空XML开始,并在用户回答问题并接收新问题时构建高达200-300Kb的XML。由于它是无状态Web服务,因此所有信息都将保存在XML中。

实际上,我只需要查找和解析响应XML中的最新问题,这应该适用于SAX解析器,并且只需修改XML的那一部分,同时添加新答案并通过Web服务再次发送回来修改后的XML。但是用户也应该能够点击“返回”。所以这意味着我必须在内存中保存XML(200-300KB),并在用户点击返回和下一步时进行必要的解析。

我的问题是哪种方法更好:

1 - 获取XML,使用DOM将其完全解析为对象,从内存中释放XML,并在用户单击和下一次单击时仅使用对象。然后,当它发回它时,从头开始用我的对象组装一个新的XML消息。此方法似乎也减少了点击时间

2 - 使用SAX解析器,只在用户点击返回和下一次时需要解析。但后来我必须将所有XML保存在内存中。我不知道Iphone是否可以处理这个问题,而且每次解析后,后续操作都需要更长的时间。但好的一面是,当我完成时,我不需要再次从对象重新组装XML。

我认为第二种方法更好,你怎么看?哪个解析器适合这项工作?

2 个答案:

答案 0 :(得分:1)

我个人更喜欢DOM XML解析器,因为它们易于使用,并且能够将解析/创建逻辑与其余代码分开。您的应用程序似乎最适合使用DOM解析器,因为您自己这样说,有时您只需要XML的某些部分,而不是整个文档。 SAX解析器不支持随机读取访问。

答案 1 :(得分:0)

阅读以下文章,您将找到最适合您的解决方案 http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

不过我会选择NSXMLDocument。