2009-08-13 2 views
1

私はXML形式でサーバーからデータを取得しています。2つのフィールドが等しいXMLオブジェクトを返すjQueryメソッド?

<items> 
    <item> 
     <field1>10</field1> 
     <field2>11</field2> 
     <field3>12</field3> 
    </item> 
    <item> 
     <field1>10</field1> 
     <field2>11</field2> 
     <field3>11</field3> 
    </item> 
</items> 

field2field3に等しいだけXMLオブジェクトを返すようにjQueryのステートメントを記述する方法はあります。データは次のようになりますか?私は現在、jQueryを使用して特定の基準(例えば、findとを使用して、$("field2:contains(11)"))を満たすxmlオブジェクトをフィルタリングしていますが、xmlフィールドの2つが等しいxmlをフィルタするための文を思いつくことはできません。私はいつもXMLをjavascript配列に変換し、等価なフィールドを探して、javascript配列をjQueryオブジェクトとして返すことができます。 jQueryステートメントでそれを行う方法があるはずです。

答えて

0

これを試してみてください:

var xmlData = $('<items>.........'); 
xmlData.find('item').each(function() { 
    if($(this).find('field2').text() == $(this).find('field3').text()) { 
     alert('Field 2 and Field 3 are equal'); 
     $(this).find('field3').remove(); //for example, to remove the dupe 
    } 
}); 
//then convert it back to a string 
//for IE 
if (window.ActiveXObject) { 
    var string = xmlData.xml; 
    alert(string); 
} 
// code for Mozilla, Firefox, Opera, etc. 
else { 
    var string = (new XMLSerializer()).serializeToString(xmlData); 
    alert(string); 
} 
+0

良いアイデアを。 2つのフィールドが等しくないxmlをフィルタリングしたいと思います。これはうまくいきます(私が望む方法ではありませんが): var xml = ' .........'; (フィールド2).find( 'field3'); $(this))= $(this).find( 'field3'); $(xml).find { アラート( 'フィールド2とフィールド3が等しくない'); リストからを削除するために "$(this).remove()"を実行しようとしましたが、それが機能しませんでした。理由は分かりません。 –

+0

@マークス - アラートは期待どおりに機能していますか?それはちょうど除去方法ですか? – karim79

+0

アラートは機能します。 removeメソッドは、私がやろうとしていたのxmlリストからを削除しません。 –

関連する問題