猜測這是一個JavaScript大師的簡單問題,但我正在學習,並且遇到了一個我無法猜測的問題。閱讀javascript中的XML屬性
我有興趣閱讀使用javascript的XML文件。這裏是一個XML文件的例子:
<object name='obj1'>
<attribute name='att1' value='val1'/>
<attribute name='att2' value='val2'/>
<attribute name='attN' value='valN'/>
<subobject name='sub1'>
<attribute name='satt1' value='sval1'/>
<attribute name='satt2' value='sval2'/>
<attribute name='sattN' value='svalN'/>
</subobject>
<subobject name='subn'>
<attribute name='snatt1' value='snval1'/>
<attribute name='snatt2' value='snval2'/>
<attribute name='snattN' value='snvalN'/>
</subobject>
</object>
正如你所看到的,我有N個對象。每個對象都具有全局屬性,並且可能有0 ... M個子對象及其屬性。
問題是,將這種(我的)代碼來解析OB1屬性,我還可以得到所有子對象的屬性:
if (window.XMLHttpRequest) {
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET",URL,false);
xmlhttp.send();
var xmlDoc=xmlhttp.responseXML;
var objList = xmlDoc.getElementsByTagName("object");
var attrList = objList[0].getElementsByTagName("attribute"); // Got ALL attributes here
}
在該代碼(爲簡單起見沒有錯誤的測試),我attrList對象獲得兩obj1和所有子對象屬性。
我該如何重寫代碼才能獲取att1 ... attN?!?!
在此先感謝!
大聲笑。之前看過類似的東西,但由於childNodes.length比N大,我認爲這是錯誤的。現在注意到,childNodes.length給出的是我總共擁有的屬性數,所以在我的XML中,每個節點都有2個屬性,childNodes.length是number_of_nodes * 2(number_of_nodes * attributes_in_each_node) 無論如何,在我的代碼中測試它,並且工作正常。謝謝!! – Ishmar 2013-03-11 02:04:08
@Ishmar:childNodes.length可能關閉的原因是因爲它也會計算「子對象」節點,並且因爲在某些瀏覽器中,它也計算屬性元素之間的空白節點。 – hugomg 2013-03-11 02:06:38