2009-08-13 2 views
1

Я получаю данные с сервера в формате XML. Данные выглядит следующим образом:Метод jQuery для возврата объектов XML, где два поля равны?

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

Есть ли способ, чтобы написать заявление JQuery, чтобы возвращать только объекты XML, где field2 равняется field3? В настоящее время я использую jQuery для фильтрации объектов xml, которые соответствуют определенным критериям (с использованием jQuery find и contains, например $("field2:contains(11)")), но я не могу придумать инструкцию для фильтрации xml, где два из полей 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

Хорошая идея. Я хочу отфильтровать xml, где два поля не равны. Это работает (хотя и не так, как я хочу): var xml = ' .........'; $ (xml) .find ('item'). Each (function() { if ($ (this) .find ('field2'). Text()! = $ (This) .find ('field3'). .text()) { предупреждение ('поле 2 и поле 3 не равны'); $ (это) .empty(); // очищает содержимое } }); Я попытался сделать «$ (this) .remove()», чтобы удалить из списка, но это не сработало. Не знаю, почему. – 2009-08-13 14:05:28

+0

@MarkS - работает ли предупреждение, как и ожидалось? это просто метод удаления? – karim79

+0

Alert works. Метод remove не удаляет из списка xml , который я пытаюсь сделать. – 2009-08-13 15:31:56

Смежные вопросы