2009-11-10 73 views
1

在給定XML元素的jQuery像這樣:JavaScript/jQuery:如何獲取XML元素中所有屬性的數組?

$('<foo oy="vey" foo="bar" here="is" another="attribute" />') 

我可以使用jQuery的或純老JavaScript來獲取包含的XML元素的所有屬性名稱的數組?我期望這樣:

['oy','foo','here','another'] 
+2

jquery並不真正支持從字符串文字形成XML。它可以在Firefox中使用,也可以在其他瀏覽器中使用,但不能使用IE。請參閱http://docs.jquery.com/Core/jQuery:「一個即時創建的HTML字符串。請注意,這將解析HTML,而不是* XML。」 – Funka

+0

哦,我還要提一下,有些插件可以讓你做到這一點,如果你想。 – Funka

回答

5

jQuery function是不是真的意味着解析XML,它可以解析HTML,但它不是真的一樣。

怎麼樣使用瀏覽器的XML解析器:

function parseXML(text) { 
    var parser, xmlDoc; 

    if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc = parser.parseFromString(text,"text/xml"); 
    } else { // IE 
    xmlDoc= new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async = "false"; 
    xmlDoc.loadXML(text); 
    } 
    return xmlDoc; 
} 

// Demo 
var doc = parseXML('<foo oy="vey" foo="bar" here="is" another="attribute" />'); 
var foo = doc.childNodes[0]; 
for (var i = 0; i < foo.attributes.length; i++) { 
    var attr = foo.attributes[i]; 
    alert(attr.name + " = " + attr.value); 
} 

運行上面的代碼here

2

This plugin會幫助你做到這一點。

您也可以使用它老式使用的東西的JavaScript這樣做:

var elt = document.getElementsByTagName('id'); 
for (i=0;i<elt.attributes.length;i++){ 
    //elt.attributes[i].nodeName is what you want, .nodeValue for its value. 
}