我有以下方式的XML:
<roster>
<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>
<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>
</roster>
我如何解析属性值并推入数组。
我有以下方式的XML:
<roster>
<player code="AUQ" name="AVDALOVIC, VULE" position="Guard"/>
<player code="AQX" name="SCHULTZE, SVEN" position="Forward"/>
</roster>
我如何解析属性值并推入数组。
如果您使用的是 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;
},
[]
);
如果您的 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);