2010-05-19 4 views
0

J'ai XMLList suivant,Comment compter les éléments en double dans XMLList et les affecter dans une ArrayCollection?

<party/> <party/> <party/> <party>A</party> <party>B</party> <party>C</party> <party>A</party> <party>B</party> <party>C</party> <party>D</party> <party>E</party> <party>D</party> <party>A</party> <party/> <party>C</party>

Je voudrais éliminer noeud blanc et de faire un ArrayCollection comme (avec nombre de parties individuelles),

Tarr = new ArrayCollection ([{Parti: "A", Count: 3}, {Parti: "B", Count: 2}, {Parti: "C", Count: 3}, {Parti: "D", Count: 2}, { Partie: "E", compte: 1}, ]);

Merci d'avance.

+0

Solution: http://www.linkedin.com/groupItem?view=&gid=65596&type=member&item=20332755 – Rishi

Répondre

0

Ceci est non testé et peut ne pas être le plus efficace, mais devrait fonctionner:

var partyDict:Dictionary = new Dictionary(); 
var parties:ArrayCollection = new ArrayCollection(); 

var xml:XML = <root><party/><party/><party/><party>A</party><party>B</party><party>C</party><party>A</party><party>B</party><party>C</party><party>D</party><party>E</party><party>D</party><party>A</party><party/><party>C</party></root>; 

for each (var p:XML in xml.party) { 
    var val:String = p.toString(); 
    if ((val != null) && StringUtil.trim(val).length > 0) { 
     if (partyDict[val] != null) { 
      partyDict[val] = (partyDict[val] as int) + 1; // may simply be able to do partyDict[val]++; 
     } else { 
      partyDict[val] = 1; 
     } 
    } 
} 

for (var key:Object in partyDict) { 
    var o:Object = new Object(); 
    o.Party = key; 
    o.Count = partyDict[key]; 
    parties.addItem(o); 
} 
0

Si vous avez la liste des parties possibles, il est juste:

var partiesObjs:ArrayCollection = new ArrayCollection(); 

var xml:XML = <root><party/><party/><party/><party>A</party><party>B</party><party>C</party><party>A</party><party>B</party><party>C</party><party>D</party><party>E</party><party>D</party><party>A</party><party/><party>C</party></root>; 
var parties:Array = ["A","B","C","D"] 

for each(var p:String in parties){ 
    var count:int = xml..party.(toString() == p).length() 
    partiesObjs.addItem({Party:p, Count:count}) 
} 
Questions connexes