I have a XML in the following way:
<roster>
<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>
<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>
</roster>
How do i parse the attribute values and push in to an array.
If you are using jquery , you can try following code .
var xml_string = [
'<roster>',
'<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>',
'<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>',
'</roster>'
].join('');
var result = [];
$( xml_string ).find('player').each( function( ){
result.push( {
code : $( this ).attr('code'),
name : $(this).attr('name'),
position : $(this).attr('position'),
});
});
result contains array of values
without jQuery library you could try following .
var xml_string = [
'<roster>',
'<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>',
'<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>',
'</roster>'].join('');
var parser = new DOMParser();
var playerTags = parser
.parseFromString( xml_string , "application/xml")
.getElementsByTagName("player");
var result = [].reduce.call(
playerTags ,
function( p, n ){
p.push( {
code : n.getAttribute('code'),
name : n.getAttribute('name'),
position : n.getAttribute('position'),
});
return p;
},
[]
);
If your xml is a string that you can do it like this. If it's already a dom document or in a document then you can skip teh part until it logs "doc is"
var strXML = '<roster>\
<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>\
<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>\
</roster>';
var p = new DOMParser();
var doc = p.parseFromString(strXML, "application/xml");
console.log("doc is",doc);
var players=doc.getElementsByTagName("player");
var i=0,arr=[];
for(i=0;i<players.length;i++){
arr.push({
code:players[i].getAttribute("code"),
name:players[i].getAttribute("name"),
position:players[i].getAttribute("position"),
});
}
console.log(arr);
["AUQ", "AVDALOVIC, VULE", "Guard"]or do you need an object with a property:value pair?