Cool, it will be good to see your continued work. We may be among the last holdouts in this mailing list - but I figure since the thread started here we can carry on.
BTW you may notice one bit of annoying repeated boilerplate in that last version. See how the callback functions for all the .each() loops begin with something like: var $foobar = $(foobar); Why don't we extend jQuery with a better version of .each() that does that for us? Let's call it .$each() as a reminder that it gives the callback a DOM element that's already been wrapped with a $(). It would look like this: jQuery.fn.$each = function( callback ) { for( var element, i = -1; element = this[++i]; ) callback( jQuery(element), i ); }; Note that in addition to calling jQuery(element), it also reverses the callback arguments - in most cases you only need the element inside the callback - it's much less often that you need the index. (In your code, only one of the four loops uses the index.) So, using that function, the code can be written as: function parseXml( xml ) { var html = []; html.push( '<div>' ); $(xml).find('sites').$each( function( $site ) { $site.find('>element').$each( function( $parent, i ) { html.push( '<br/>', $parent.attr('label'), i + 1, '<br/>' ); $parent.find('>element').$each( function( $child ) { html.push( $child.attr('label'), '<br/>' ); $child.find('>element').$each( function( $inner ) { html.push( $inner.attr('label'), ': ', $inner.text(), '<br/>' ); }); }); }); }); html.push( '</div>' ); $('#container').append( html.join('') ); } That's getting pretty clean! Note that the code still uses the naming convention of $foobar for a jQuery object - it helps make it clear which variables are jQuery objects. -Mike On Tue, Feb 2, 2010 at 10:27 PM, augur <312...@gmail.com> wrote: > OK, so this is much better than a lesson in parsing XML. Showing the > errors that I had made in my process, you have also shown sound jQuery > which I was having a hard time picking up from the documentation. I > tend to learn best by doing and getting feedback. Mike, thank you. I > am going to keep this chain going with my mods as I make them. >