Синтаксический анализ Jquery XML - PullRequest
0 голосов
/ 12 июня 2009

У меня есть такой XML

<resultGroups> 
    <subGroups>
        <results> </results>
        <results> </results>
    </subGroups>
    <subGroups>
        <results> </results>
        <results> </results>
    </subGroups>    
    <name> </name>
</resultGroups>
<resultGroups> 
    <subGroups>
        <results> </results>
        <results> </results>
    </subGroups>
    <subGroups>
        <results> </results>
        <results> </results>
    </subGroups>    
    <name> </name>
</resultGroups>

У меня есть этот код для выбора количества результатов внутри каждой группы результатов

$('resultGroups', $(xml)).each(function() {
    count = $('results', this).length;
    arr[i] = count;
    i++;
});

Мне нужно получить имя из каждого тега resultGroup и сохранить его в массиве.
Как я могу сделать это внутри кода выше?

Как выбрать только тег имени первой группы результатов только без функции .each?

1 Ответ

3 голосов
/ 12 июня 2009

Если ваш XML выглядит так:

<resultGroups> 
    <subGroups>
        <results> </results>
    </subGroups>
    <subGroups>
        <results> </results>
    </subGroups>    
    <name>myname</name>
</resultGroups>
<resultGroups> 
    <subGroups>
        <results> </results>
        <results> </results>
    </subGroups>
    <subGroups>
        <results> </results>
        <results> </results>
    </subGroups>    
    <name>othername</name>
</resultGroups>

Используя этот код:

var groups = {};
$('resultGroups', $(xml)).each(function() {
    var count = $('results', this).length;
    var name = $('name',this).text();
    groups[name] = count;
});

После этого группы будут словарём (объектом, отсюда и {}) примерно так:

{'myname': 2, 'othername': 4}

К которым вы можете получить доступ, выполнив groups.myname или groups['myname']

Чтобы получить только теги имен непосредственно в теге resultGroups - я не видел других в коде примера, поэтому я не знал, что их было больше - используйте вместо этого код:

var name = $(this).children('name').text();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...