2013-05-09 48 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