Ответ 1
Я не понимаю, что вы пытаетесь перевернуть, я думаю, что один из тегов в вашем вопросе был искажен. Вы говорите: "Я хочу сделать петлю каждую из определенной строки". и я думаю, что у вас там есть тэг.
В любом случае, некоторые примеры извлечения данных из проанализированного XML-документа с использованием jQuery. Комментарии показывают, что будет предупреждено.
Я думаю, что часть проблемы заключается в том, что у вас есть значения id как родственные, а не дочерние элементы. Кажется, что более последовательная структура может быть:
<rows>
<row id="5">
<cell>Item1</cell>
<attrs>
<attr id="1">
<type>CheckBox</type>
<values>
<value>
<id>10</id>
</value>
<value>
<id>11</id>
</value>
</values>
</attr>
<attr id="2">
<type>CheckBox</type>
<values>
<value>
<id>20</id>
</value>
<value>
<id>21</id>
</value>
</values>
</attr>
</attrs>
</row>
</rows>
Но если у вас нет контроля над xml, пожалуйста, игнорируйте это предложение.: -)
Хорошо, вот несколько примеров обхода для получения различных фрагментов данных:
Сначала позвольте просто получить "Item1"
<script type="text/javascript">
// Item1
$.get('sample.xml', null, function (data, textStatus) {
alert( $(data).find('rows row[id=5] cell').text());
}, 'xml');
</script>
Теперь мы получим 1 и 2:
<script type="text/javascript">
// 1
// 2
$.get('sample.xml', null, function (data, textStatus) {
$(data).find('rows row[id=5] attrs attr > id').each( function(){
alert($(this).text()); // 1, 2
});
}, 'xml');
</script>
И, наконец, позвольте вытащить основные атрибуты attr и привязать их к значениям:
<script type="text/javascript">
// rows row[id=5] attrs attr > id 1 has inner ids of 10,11
// rows row[id=5] attrs attr > id 2 has inner ids of 20,21
$.get('sample.xml', null, function (data, textStatus) {
var out = ''
$(data).find('rows row[id=5] attrs attr > id').each( function(){
out += 'rows row[id=5] attrs attr > id ' + $(this).text();
var innerIds = [];
$(this).siblings('values').find('value id').each(function(){
innerIds.push($(this).text())
});
out += ' has inner Ids of ' + innerIds.join(',') + '\n';
});
alert(out);
}, 'xml');
</script>