Как подсчитать дубликаты элементов в XMLList и назначить их в ArrayCollection? - PullRequest
0 голосов
/ 19 мая 2010

Я подписан на XMLList,

<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>

Я хотел бы удалить пустой узел и сделать ArrayCollection похожим (с подсчетом отдельной партии),

tArr = new ArrayCollection ([{Party: "A", Count: 3}, {Сторона: "B", Количество: 2}, {Сторона: "C", Количество: 3}, {Сторона: "D", Количество: 2}, {Сторона: "E", Количество: 1}, ]);

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 19 января 2011

Если у вас есть список возможных партий, это просто:

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} )
}
0 голосов
/ 07 января 2011

Это не проверено и может быть не самым эффективным, но должно работать:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...