I've read many guides about XML parsing, but was wondering if anyone could explain the different types of XML parsing and which one is best for performance, as I want to load the iTunes Music Library.XML into a table view, in a Mac app. Also was wondering if anyone could provide a tutorial on how to do this t开发者_运维技巧oo.
The easiest way to do this is to just use NSDictionary dictionaryWithContentsOfFile:
NSString* libraryPath = @"~/Music/iTunes/iTunes Music Library.xml";
NSDictionary* musicLibrary = [ NSDictionary dictionaryWithContentsOfFile: libraryPath ];
Also note that users can move their music library so a more complete example is:
NSString* libraryPath = @"~/Music/iTunes/iTunes Music Library.xml";
NSUserDefaults* prefs = [ NSUserDefaults standardUserDefaults ];
[ prefs synchronize ];
NSDictionary* iAppsPrefs = [ prefs persistentDomainForName: @"com.apple.iApps" ];
NSArray* recentPaths = [ iAppsPrefs objectForKey: @"iTunesRecentDatabasePaths" ];
if( [ recentPaths count ] > 0 ) {
libraryPath = [ recentPaths objectAtIndex: 0 ];
}
NSDictionary* musicLibrary = [ NSDictionary dictionaryWithContentsOfFile: libraryPath ];
For really large libraries it can take several seconds to read the contents so it is best to do this on a thread.
Once you have this loaded then look at the structure of iTunes Music Library.xml in a text editor to see how you will have to walk the tree to format the information in a way that is appropriate to your needs.
EDIT:
With iTunes 11 Apple is now providing a framework on OSX to access the iTunes library. Documentation can be found here.
精彩评论