我有这样的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.myname
或groups['myname']
进行访问要仅直接在resultGroups标签中获取名称标签-在示例代码中没有看到其他标签,因此我不知道还有更多-请改用以下代码:
var name = $(this).children('name').text();