0

我有以下方式的XML:

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

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

4

2 回答 2

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;
  },
  []
);
于 2013-05-09T09:58:12.937 回答
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);
于 2013-05-09T10:02:26.583 回答