Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 用Cocoa解析XML数据_Objective C_Xml_Cocoa - Fatal编程技术网

Objective c 用Cocoa解析XML数据

Objective c 用Cocoa解析XML数据,objective-c,xml,cocoa,Objective C,Xml,Cocoa,我正在使用iTunes菜单栏控制器,我想获得用户库中所有歌曲的名称。我发现有一个名为iTunes Library.XML的XML文件。它保存了iTunes的所有数据(姓名、艺术家、唱片集等),我希望能够访问这些数据以在控制器中使用 我真的从来没有用XML做过这么简单的事情 我也是objective-C的noob,所以要非常简单…关于扫描xml信息,您需要了解两件事。一个名为xpath,另一个名为xquery。从表面上看,它们基本上都是创建正则表达式以获取xml数据不同部分的方法。谷歌搜索xpat

我正在使用iTunes菜单栏控制器,我想获得用户库中所有歌曲的名称。我发现有一个名为
iTunes Library.XML的XML文件。
它保存了iTunes的所有数据(姓名、艺术家、唱片集等),我希望能够访问这些数据以在控制器中使用

我真的从来没有用XML做过这么简单的事情


我也是objective-C的noob,所以要非常简单…

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


苹果的开发文档

我很确定iTunesXML库是一个XML PLIST字典。通过阅读NSDictionary并使用+dictionaryWithCintentsOf…:class方法,然后仅通过其键导航结构,可以省去一些麻烦


如果您使用Xcode工具附带的属性列表编辑器应用程序打开它,您可以直观地探索它的结构,这将使您了解如何以编程方式导航DICT和数组。

NSXMLParser似乎有点过于复杂。我相信这只是一本词典。我怀疑这个文件太大了,您可能会从解析器的工作中受益匪浅。这对于小xml文件可能很有用,但对于较大的文件(超过几兆字节),这将导致较大的内存占用。不久前,我不得不做一些类似的事情,解析xml文件大大减少了应用程序使用的内存量。没错,但如果你说的是Mac OS X,是否有人的库足够大,足以引起实际问题?我对此表示怀疑。