我有这样的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>


我有这段代码来选择每个resultGroup内的结果数

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


我想要的是从每个resultGroup标记中获取名称并将其存储在数组中。
如何在上面的代码中执行此操作?

如何不使用.each函数而仅选择第一个resultGroup的名称标签?

最佳答案

如果您的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.mynamegroups['myname']进行访问

要仅直接在resultGroups标签中获取名称标签-在示例代码中没有看到其他标签,因此我不知道还有更多-请改用以下代码:

var name = $(this).children('name').text();

10-07 20:23