Apple's plist XML (Properties List) is PAINFUL

I started poking around with Scala and tried to re-implement the iTunes Music Library parser I wrote in .Net as a Scala library to give me a real problem to solve. This effort reminded me of how painful Apple's plists are to work with.

Apple saves the iTunes Library information in a binary file and as well as an XML file using its plist format. It is great that the provide the XML data that enables tools like iTunesExport, but they certainly could have made working with the XML easier.

Simply put, they store key value pairs as:
<key>Artist</key><string>U2</string>
Three is no clean way to associate the 'value' with a 'key' other than the order of the nodes in XML. This makes things like XPath parsing very difficult.

For a more in depth explanation, read this post.

I was able to get the Scala library to parse the plist but it wasn't as clean as I hoped. If I stay motivated I may finish up a Scala version of the tool to provide a version that will work on OS X (Scala compiles down to Java classes).

2 comments:

  1. Don't know if it's of any use to you, but I wrote a java lib that (aside from making simple xml reading a bit simpler) handles plist serialization and deserialization.
    It's at http://xmlwise.googlecode.com.

    ReplyDelete
  2. You might also be interested in the BinaryPListParser from the Quaqua project.

    ReplyDelete