动态读取和过滤XML文件

时间:2013-06-03 07:23:59

标签: objective-c xml macos cocoa xml-parsing

iTunes导出

的XML文件
/Users/username/Music/iTunes/iTunes Music Library.xml

我的应用需要阅读此文件 我的2200首歌曲库可以很好地工作,但是对于较大的图书馆来说

  1. 将所有内容加载到RAM中
  2. 启动时间最长为10秒
  3. 我需要动态读取这个xml文件,并且能够同时迭代它。

    任何建议,示例代码,参考资料,提示都将不胜感激!

1 个答案:

答案 0 :(得分:1)

我假设您使用基于DOM(NSXMLDocument?)的方法加载iTunes资料库。
这可以解释内存消耗和慢启动行为。

为避免一次将整个文档加载到RAM中,您应切换到SAX解析器并跳过您不感兴趣的元素。
Cocoa内置的SAX Parser是NSXMLParser,它允许您按照NSXMLParserDelegate顺序读取和过滤元素。

因为您似乎构建了与iTunes相关的应用程序:
Apple最近published documentation用于现在公开的iTunesLibrary.framework。