2012-03-08 20 views
1

特定のノードの子ノードを読み取るXMLファイルがあります。以下はXMLファイルです。jQuery:XML - 特定のノードから子ノードを読み取る

XMLファイル構造:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<categories> 
<category type='Type A'> 
    <genre>1</genre> 
    <genre>2</genre> 
</category> 
<category type='Type B'> 
    <genre>3</genre> 
    <genre>4</genre> 
    <genre>5</genre> 
</category> 
<category type='Type C'> 
    <genre>6</genre> 
</category> 
</categories> 

私はこのXMLを使用して必要wouildものの例は、私は私が行うことができ、他のすべてのカテゴリを除外することができる方法を正確にカテゴリタイプBのすべてのジャンルであります.find( "ジャンル")各....のみリターン用いて3,4および5

HERESにコードIMをジャンル:

$.ajax({ 
     type: "GET", 
     url: "myxml.xml", 
     dataType: "xml", 
     success: function(data){ 
      xml = data; 
      }); 
     } 
    }); 

    return {getXml : function() 
    { 
     if (xml) return xml; 
    }}; 
})(); 

/* On Category Change */ 
$(".category").change(function(){ 
    var xml = xmlArtists.getXml(); 

    $(".genre").find("option").remove().end(); 

    var type = $(this).val(); 
    var typeGenres = $(xml).find("categories").filter(function(){ 
     return $(this).find("category").attr("type") == type; 
    }); 

    typeGenres.find("genre").each(function(){ 
     var genre = $(this).text(); 
     $(".genre").append("<option value=" + genre + ">" + genre + "</option>"); 
    }); 
}); 

.categoryは、コードが変更されたときにオブジェクトが変更されたときに別のオブジェクトをポーリングするので、この質問の重要性はそれほど重要ではありません。

ありがとうございます!

+0

はちょうど私が思ったより... HERESにコードを簡単だったそれを考え出した:。 /*カテゴリーの変更*/ \t $( "カテゴリ")には(関数(){ \t \tするvar XMLを変更= xmlArtists.getXml(); \t \t \t \t $( "ジャンル ")(" オプション")を見つける(削除)終了();。。。 \t \t \t \t VARタイプ= $(この).val (); \t \t $(xml).find( "category [type = '" + type + "']")。find( "genre")。それぞれ(function(){ \t \t \t var genre = $(this).text();\t \t \t $( "。genre")。append( ""); \t \t}); \t}); –

答えて

4
$(xml).find('category[type="Type B"] > genre') 

これは、そのtype"Type B"あるすべてのcategoryノードを検索し、一致した各カテゴリーのすべてのgenre子ノードを取得します。

+0

haha​​ yaあなたが返信する直前にそれを投稿していましたが、私の評判のせいで私を聞かせてしまいました。私が思ったよりも簡単でした...とにかくありがとう! –

関連する問題