Since your keys are the same for each player (code, position, countrycode), you can't use an associate array (in JavaScript, there actually isn't one, but you can use an Object). You'd have to use an array of objects. Here's how I'd do it:
var str = '<root><player><roster><player code="AUQ" position="Guard" countrycode="SRB"/><player code="AQX" position="Forward" countrycode="GER"/></roster></player><player><roster><player code="AUQ1" position="Guard" countrycode="SRB"/><player code="AQX1" position="Forward" countrycode="GER"/></roster></player></root>',
oParser = new DOMParser(),
xmlDoc = oParser.parseFromString(str, "text/xml");
var players = xmlDoc.getElementsByTagName("player"),
ret = [], i, j, cur;
for (i = 0, j = players.length; i < j; i++) {
cur = players[i];
if (cur.hasAttribute("code")) {
ret.push({
code: cur.getAttribute("code"),
position: cur.getAttribute("position"),
countrycode: cur.getAttribute("countrycode")
});
}
}
console.log(ret);
DEMO: http://jsfiddle.net/2GPBY/1/
If you want to create one map of key to all values for that key, you could use this:
var str = '<root><player><roster><player code="AUQ" position="Guard" countrycode="SRB"/><player code="AQX" position="Forward" countrycode="GER"/></roster></player><player><roster><player code="AUQ1" position="Guard" countrycode="SRB"/><player code="AQX1" position="Forward" countrycode="GER"/></roster></player></root>',
oParser = new DOMParser(),
xmlDoc = oParser.parseFromString(str, "text/xml");
var players = xmlDoc.getElementsByTagName("player"),
ret = {}, i, j, cur;
for (i = 0, j = players.length; i < j; i++) {
cur = players[i];
if (cur.hasAttribute("code")) {
if (!("code" in ret)) {
ret.code = [];
}
ret.code.push(cur.getAttribute("code"));
if (!("position" in ret)) {
ret.position = [];
}
ret.position.push(cur.getAttribute("position"));
if (!("countrycode" in ret)) {
ret.countrycode = [];
}
ret.countrycode.push(cur.getAttribute("countrycode"));
}
}
console.log(ret);
DEMO: http://jsfiddle.net/2GPBY/3/