2012-05-08 107 views
1

我想使用JavaScript解析大型XML文件。在線看,似乎最簡單的方法就是使用瀏覽器的DOM解析器。這工作,我可以通過ID獲取元素。我還可以獲得這些元素的「類」屬性,並返回我所期望的。但是,我似乎沒有能夠按班獲得元素。在JavaScript中解析XML,試圖通過類名獲取元素

xmlString = '<?xml version="1.0"?>'; 
xmlString = xmlString + '<example class="test" id="example">content</example>' 

parser = new DOMParser(); 
xmlDoc = parser.parseFromString(xmlString,"text/xml"); 

xmlDoc.getElementById("example");  
     // returns the example element (good) 

xmlDoc.getElementById("example").getAttribute("class"); 
     // returns "test" (good) 

xmlDoc.getElementsByClassName("test"); 
     // returns [] (bad) 

任何想法:

下在最新的Chrome被審判?

+0

哪個瀏覽器?也許你的瀏覽器不支持這個功能? – gdoron

+1

可能重複到http://stackoverflow.com/questions/9396354 – Bergi

+1

這是行不通的,因爲你正在處理一個XML文檔,而HTML特定的屬性(如'class')不適用。但是,仍然可以通過標記名稱獲取元素(即'xmlDoc.getElementsByTagName('example');') - 您是否可以使用它來獲得您的優勢? –

回答

0

您可以使用JQuery通過使用類選擇器來解析XML文件。 http://jquery.com

+0

好吧,看起來這是jQuery可用的最佳方式。謝謝。 –

1

這應該得到給定類的所有元素,假定標記名稱是一致的。

var elements = xmlDoc.getElementsByTagName('Example'); 
var classArray = []; 
for(var i=0;i<elements.length;i++){ 
    if(elements[i].className=="test"){ 
     classArray.push(elements[i]) 
}} 
+0

這幾乎可行,除了.className至少在Chrome中不存在,所以你必須使用getAttribute('class')。不過,我不知道它是否比jQuery解析器快 –

0

將解析器類型更新爲HTML而不是XML應該可行。

parser = new DOMParser(); 
xmlDoc = parser.parseFromString(xmlString,"text/html")