0

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.

3
  • What's your expected output format? Commented May 9, 2013 at 9:52
  • For each <player> contains code,name and position in one array Commented May 9, 2013 at 9:54
  • That's what I'm saying, do you want it like ["AUQ", "AVDALOVIC, VULE", "Guard"] or do you need an object with a property:value pair? Commented May 9, 2013 at 9:56

2 Answers 2

1

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;
  },
  []
);
Sign up to request clarification or add additional context in comments.

1 Comment

i am using javascript..can u please give me an idea how to do it
0

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);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.