2009-06-12 89 views
0

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

我有这样的代码来选择内部结果的数量XML每个resultGroup

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

我想是从每个resultGroup标签获取名称并将其存储在一个数组中。
如何在上面的代码中做到这一点?

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

回答

3

如果你的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(); 
+0

因为我没有名字......我用这个代码,而不是...两个不同阵列的数量和名称.... $( 'resultGroups',$(XML))。每个(函数(){ \t \t \t 变种\t计数= $( '结果',这一点)。长度; \t \t变种名称= $( '姓名',这一点)的.text(); \t \t resultGroupNames [I] =名称; \t \t resultsNo [i] = count; \t \t i ++; \t}); 我得到了正确的计数。但在名称的情况下,它将所有名称存储在resultGroup标签内....即名称标签inisde子组结果等..我只想要名称标签直接在resultGroup里面... – Andromeda 2009-06-12 10:13:20

0

这对我来说非常有用!谢谢!!!

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