2010-07-09 47 views
1

我正在使用iTunes菜单栏控制器,我想获取用户库中所有歌曲的名称。我发现有一个名为iTunes Library.xml.的XML文件,它包含iTunes(名称,艺术家,专辑等)的所有数据,我希望能够访问该数据以在我的控制器中使用。使用Cocoa解析XML数据

我真的从来没有使用XML的任何东西,所以还是容易...

我也是客观-C一个小白这样下去很容易...

回答

1

有两件事情你会想了解扫描xml信息。一个被称为xpath,另一个被称为xquery。表面上他们都是创建正则表达式来抓取xml数据的不同部分的基本方法。谷歌搜索xpath应该提出许多例子来创建任何类型的表达式,你可以想象。 NSXMLParser是一个Cocoa类,它可以创建一个解析器对象并具有方法nodesForXPath,这将使您的xpath查询收集结果并将它们存储在一个数组中。

苹果的开发文档here

+0

NSXMLParser似乎有点过于复杂。我相信这只是一个存档的NSDictionary。我怀疑这个文件太大了,你会非常喜欢解析器的工作。 – 2010-07-10 17:23:16

1

我敢肯定iTunes的XML库是一个XML PLIST字典。您可以通过阅读NSDictionary并使用+ dictionaryWithCintentsOf ...:class方法来保存一些令人头痛的问题,然后通过键来浏览结构。

如果您使用Xcode Tools随附的Property List Editor应用程序打开它,您可以直观地浏览它的结构,这将让您了解如何以编程方式导航字典和数组。

+0

这对于小型xml文件可能很有用,但对于较大的文件(超过几兆字节),这会导致大量内存占用。前段时间,我不得不做类似的事情,解析xml文件显着减少了应用程序使用的内存量。 – 2010-12-26 22:28:55

+1

真的够了,但如果你在谈论Mac OS X,是否有足够大的任何人的图书馆导致实际问题?我不信。 – 2010-12-26 22:41:27