2012-04-19 6 views
2

どちらも動作しています...なぜparseXMLが必要ですか?parseXMLを使用してjQueryで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

あなたは$についてドキュメントを見ましたか? –

+0

[文書から](http://api.jquery.com/jQuery/)> XML(Ajax呼び出しから返されたデータ)を$()関数に渡すと、XML構造の個々の要素を.find()と他のDOMトラバーサルメソッド。 – ManseUK

+0

@ManseUK大丈夫です。しかし、なぜそれがなくてもparseXMLが必要なのはなぜですか? –

答えて

3

$.parseXML機能はDOMParserまたはIEで同様のものを使用します。

したがって、xmlバージョン($.parseXML(xml).xmlVersion)のようなものが含まれるように、実際のxmlオブジェクトを返します。

あなたはこのような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> 

をし、第二の例をしている使用しますが、この背中を取得しますokは親タグであるため何も見つかりません。$(xml).first()を実行すると、コメントが出てきて、いいとは思いません。

しかし、あなたはあなたの最初の例を使用している場合は、親タグとして文書を取得します:

[#document] 

ので、あなたがこのようなokタグ得ることができます。問題なく$($($.parseXML(xml)).find("ok")をし、そこではありません最初のノードとしてコメント。