2

両方とも機能しています...では、なぜ必要なのparseXMLですか?

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

4

1 に答える 1

3

この$.parseXML関数は、DOMParserまたは IE で同様のものを使用します。

したがって、実際の xml オブジェクトが返されるため、たとえば xml バージョン ( $.parseXML(xml).xmlVersion) などのものが含まれます。

次のような xml がある場合:

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

2番目の例を使用すると、これが返されます:

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

したがって、今実行しようとして$(xml).find("ok")も、ok が親タグであるため何も見つかりません。実行する$(xml).first()とコメントが表示されますが、それは良いことではないと思います。

ただし、最初の例を使用している場合は、ドキュメントを親タグとして取得します。

[#document]

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

于 2012-04-19T13:37:03.033 に答える