2013-05-09 22 views
0

解析XML节点我有以下方式XML:如何使用JavaScript

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

我如何解析的属性值,并推到一个数组。

+0

你的预期输出格式是什么? – 2013-05-09 09:52:52

+0

对于每个包含一个数组中的代码,名称和位置 – vishnu 2013-05-09 09:54:01

+0

这就是我所说的,你想让它像'[“AUQ”,“AVDALOVIC,VULE”,“Guard”]还是需要一个对象属性:值对? – 2013-05-09 09:56:44

回答

0

如果你的xml是一个字符串,你可以这样做。如果它已经是一个dom文档或文档,那么你可以跳过该部分,直到它记录“文档是”

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

我正在使用javascript..can你请给我一个想法如何做到这一点 – vishnu 2013-05-09 10:00:41