如何使用javascript解析xml节点

时间:2013-05-09 09:50:30

标签: javascript

我有以下方式的XML:

<roster>
<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>
<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>
</roster>

如何解析属性值并推入数组。

2 个答案:

答案 0 :(得分:1)

如果您使用的是jquery,可以尝试使用以下代码。

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包含值数组

没有jQuery库你可以试试。

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;
  },
  []
);

答案 1 :(得分:0)

如果您的xml是一个字符串,您可以这样做。如果它已经是dom文档或文档,那么你可以跳过部分,直到它记录“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);