2012-04-19 61 views
2

兩者都在工作......所以我爲什麼需要parseXML在jQuery中使用/ out parseXML解析XML?

var x='<a>\ 
<item k="1" p1="aaa" />\ 
<item k="2" p1="bbb" />\ 
</a>'; 


alert($($.parseXML(x)).find("item[k='1']").attr('p1')); //aaa 

alert($(x).find("item[k='1']").attr('p1')); //aaa 

http://jsbin.com/ukahum/2/edit

+1

您看過$的文檔嗎? – 2012-04-19 13:18:07

+0

[來自文檔](http://api.jquery.com/jQuery/)>可以將XML(從Ajax調用返回的數據)傳遞給$()函數,以便可以使用XML結構的單個元素.find()和其他DOM遍歷方法。 – ManseUK 2012-04-19 13:22:17

+0

@ManseUK好的謝謝。但爲什麼我需要parseXML如果我已經沒有它...? – 2012-04-19 13:23:21

回答

3

$.parseXML功能將使用IE類似DOMParser什麼的。

所以它會返回一個真正的xml對象,所以它會包含像xml版本($.parseXML(xml).xmlVersion)這樣的東西。

如果你有這樣的XML:如果您嘗試執行$(xml).find("ok")現在

[ 
<!--?xml version="1.0" encoding="UTF-8" ?--> 
, 
<ok>​…​</ok>​ 
] 

所以:

<?xml version="1.0" encoding="UTF-8" ?> 
<ok> 
    <yes>true</yes> 
</ok> 

,並使用你第二個例子,你會得到這個回不會找到任何東西,因爲好的是父母的標籤,如果你執行$(xml).first()你會得到一個評論,我不認爲這會很好。

,但如果您使用的第一個例子,你會得到一個文檔作爲父標籤:

[#document] 

這樣你就可以得到ok標籤是這樣的:$($($.parseXML(xml)).find("ok")沒有問題,而且不會有一個評論作爲第一個節點。