I started off trying to read through the data, but the structure was just to messy, in the end I figured out I could probably do most of the grunt work with XPath. This approach seemed promising, and I got good results initially, however my lack of XPath experience quickly started to let me down. Changing your XPath expression in code (C#) is possible, but typically means a re-compile - especially when you have anonymous methods, which I use a lot for sorting collections.
So I went in search of a good XPath tutorial, and I was somewhat disappointed with what I found. There are a few - but they are a bit lacking, the W3Schools XPath Article one was the most complete, and an XPath article on Google Knol had some nice examples. If anyone comes across a really good XPath tutorial let me know!
What I did find while I was looking was a free XPath Viewer, it highlights the selected nodes as you type your XPath query. This made the learning process so much quicker, and allowed me to debug a lot of my XPath queries before they got as far as the code. The Liquid XML Studio XPath viewer also added itself to Visual Studio 2008 which made my life even easier.

Liquid XML Studio XPath Viewer