However, I have a couple of issues with quibbles on how you've implemented namespace support.
First, I'm less interested in which namespaces are defined for a particular node, as in what namespace a particular node lives in. I don't see how I can discover this using the existing syntax.
I am torn between suggesting that you modifed the code to only define an @xmlns property that resolves to the namespace URI that applies to the node (i.e. no array) or keep this, but also define an element such as '_' or 'default' where you map the default namespace and put the active one in $.
Additionally, there are potential problems when an node has two or more attributes with the same local name that butunder different namespaces, such as . This is nasty and may be something you punt on, but it's best to know it's out there.
More feedback as I get a chance to play with this.
Ahh, perhaps I should have been more clear -- namespaced nodes have their entire "prefix:localName" string as the object property.
This does mean that you have to use bracket syntax instead of dot syntax to access it. The alternative (to preserve dot syntax was to turn the : into $, but that looked ugly.