Sorting XML documents using an XMLListCollection
Posted on 2008-01-13 14:31 OldHawk 阅读(506) 评论(0) 编辑 收藏 举报
The following example shows how you can sort an XML document by converting it into an XMLListCollection and applying a sort. You can also easily reverse the current sort by calling the SortField object’s
reverse()
method and refreshing the XMLListCollection object<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/12/04/sorting-xml-documents-using-an-xmllistcollection/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.utils.StringUtil;
private function list_labelFunc(item:Object):String {
return StringUtil.substitute("{0} {1} ({2} {3})",
item.@label, // city
item.@name, // name
item.parent().parent().@abbrev, // league
item.parent().@label); // division
}
private function checkBox_click(evt:MouseEvent):void {
sortField.reverse();
xmlListColl.refresh();
}
]]>
</mx:Script>
<mx:XML id="mlb" source="mlb.xml" />
<mx:XMLListCollection id="xmlListColl"
source="{mlb.league.division.team}">
<mx:sort>
<mx:Sort>
<mx:fields>
<mx:SortField id="sortField"
name="@label"
caseInsensitive="true" />
</mx:fields>
</mx:Sort>
</mx:sort>
</mx:XMLListCollection>
<mx:ApplicationControlBar dock="true">
<mx:CheckBox id="checkBox"
label="reverse()"
labelPlacement="left"
click="checkBox_click(event);" />
</mx:ApplicationControlBar>
<mx:List id="list"
dataProvider="{xmlListColl}"
labelFunction="list_labelFunc"
width="300"
rowCount="8" />
</mx:Application>
<!-- http://blog.flexexamples.com/2007/12/04/sorting-xml-documents-using-an-xmllistcollection/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.utils.StringUtil;
private function list_labelFunc(item:Object):String {
return StringUtil.substitute("{0} {1} ({2} {3})",
item.@label, // city
item.@name, // name
item.parent().parent().@abbrev, // league
item.parent().@label); // division
}
private function checkBox_click(evt:MouseEvent):void {
sortField.reverse();
xmlListColl.refresh();
}
]]>
</mx:Script>
<mx:XML id="mlb" source="mlb.xml" />
<mx:XMLListCollection id="xmlListColl"
source="{mlb.league.division.team}">
<mx:sort>
<mx:Sort>
<mx:fields>
<mx:SortField id="sortField"
name="@label"
caseInsensitive="true" />
</mx:fields>
</mx:Sort>
</mx:sort>
</mx:XMLListCollection>
<mx:ApplicationControlBar dock="true">
<mx:CheckBox id="checkBox"
label="reverse()"
labelPlacement="left"
click="checkBox_click(event);" />
</mx:ApplicationControlBar>
<mx:List id="list"
dataProvider="{xmlListColl}"
labelFunction="list_labelFunc"
width="300"
rowCount="8" />
</mx:Application>