objective-c - 动态读取和过滤 XML 文件

标签 objective-c xml macos cocoa xml-parsing

iTunes 导出 XML 文件位于

/Users/username/Music/iTunes/iTunes Music Library.xml

我的应用程序需要读取此文件。
它与我的 2200 首歌曲库配合得很好,但对于更大的库,它就不够用了

  1. 将所有内容加载到 RAM
  2. 启动最多需要 10 秒

我需要动态读取这个 xml 文件,并能够同时迭代它。

任何建议、示例代码、引用资料、提示,我们将不胜感激!

最佳答案

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

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

当你似乎构建一个 iTunes 相关的应用程序时:
苹果最近published documentation对于现在公开的 iTunesLibrary.framework。

关于objective-c - 动态读取和过滤 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891845/

相关文章:

iphone - UIButton 选择颜色

ios - 应用程序在有效负载中引用非公共(public)选择器

android -/res/xml/mms_config.xml 位于哪里?

xml - 反 XML scala 隐藏 xml 属性

android - 在 Android 中开发 GUI 的好工具?

ios - Objective C 将图像保存到图库

ios - UITableView reloadData,reloadSections:withRowAnimation:和reloadRowsAtIndexPaths:withRowAnimation的性能:

macos - QtWebBrowser macOS 签名问题

.net - 使用 Mac OSX 在 Mono 上使用 .NET 4 时出现 mscorlib 错误

objective-c - 在核心数据中设置一个自动递增的字段