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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.