<?xml version=""1.0"" encoding=""utf-8""?>
<Catalog>
<Album artist=""The Last Shadow Puppets"" title=""The Age Of The Understatement"">
<Track rating=""4"" length=""P3M7S"">The Age Of The Understatement</Track>
<Track rating=""3"" length=""P2M18S"">Standing Next To Me</Track>
<Track rating=""5"" length=""P2M26S"">Calm Like You</Track>
<Track rating=""3"" length=""P3M38S"">Separate and Ever Deadly</Track>
<Track rating=""2"" length=""P2M37S"">The Chamber</Track>
<Track rating=""3"" length=""P2M44S"">Only The Truth</Track>
</Album>
<Album artist=""Kings Of Leon"" title=""Because Of The Times"">
<Track rating=""4"" length=""P7M10S"">Knocked Up</Track>
<Track rating=""2"" length=""P2M57S"">Charmer</Track>
<Track rating=""3"" length=""P3M21S"">On Call</Track>
<Track rating=""4"" length=""P3M09S"">McFearless</Track>
<Track rating=""1"" length=""P3M59S"">Black Thumbnail</Track>
</Album>
</Catalog>
First load the string with the XML:Load action.
To get started parsing, you need a For each node "/Catalog", to parse the Catalog node. In a sub-event you now parse the Album nodes, and from another sub-event you parse the Track nodes.
That traverses the tree. Now at each level you add the actions to get at the data via the XML.StringValue() expression. Attributes require an @ prefix (so: @rating), and the node data itself can use the tag node().
You can also get the number of nodes with the XML.NodeCount() expression, with the relevant name.