XML、XMLList、XMLListCollection、ArrayCollection关系转换

用arraycollection在做datagrid时用着很不错,同时其arr.source可以不用再次刷新。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="absolute"
				creationComplete="init()">
	<mx:Script>
		<!--[CDATA[
			import mx.collections.XMLListCollection;
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			public var myData:XML=
				<tables>
					<table>
						<name>TRP_USERS</name>
						<statement>CREATE TABLE IF NOT EXISTS TRP_USERS (USER_ID INTEGER PRIMARY KEY AUTOINCREMENT,USER_NAME TEXT,PASSWORD TEXT,CREATION_DATE DATE)</statement>
					</table>
					<table>
						<name>TRP_PROJECTS</name>
						<statement>CREATE TABLE IF NOT EXISTS TRP_PROJECTS (PROJECT_ID INTEGER PRIMARY KEY AUTOINCREMENT,PROJECT_NAME TEXT,PROJECT_INFO_SEG1 TEXT,PROJECT_INFO_SEG2 TEXT,PROJECT_INFO_SEG3 TEXT,PROJECT_INFO_SEG4 TEXT,PROJECT_INFO_SEG5 TEXT,PROJECT_INFO_SEG6 TEXT,PROJECT_INFO_SEG7 TEXT,PROJECT_INFO_SEG8 TEXT,PROJECT_INFO_SEG9 TEXT,PROJECT_INFO_SEG10 TEXT,PROJECT_INFO_SEG11 TEXT,PROJECT_INFO_SEG12 TEXT,PROJECT_INFO_SEG13 TEXT,PROJECT_INFO_SEG14 TEXT,PROJECT_INFO_SEG15 TEXT,TECH_DIRECTOR_NAME TEXT,TECH_PM_NAME,CREATION_DATE DATE)</statement>
					</table>
				</tables>;

			private var xmlList:XMLList=new XMLList();
			private var xmlListCollection:XMLListCollection=new XMLListCollection();
			private var provider:ArrayCollection;

			private function init():void
			{
				xmlList=myData.elements("table");
				xmlListCollection.source=xmlList;

				provider=new ArrayCollection(xmlListCollection.toArray());
				grid.dataProvider=provider;
			}
		]]-->
	</mx:Script>
	<mx:DataGrid x="221"
				 y="65"
				 width="742"
				 height="294"
				 id="grid">
		<mx:columns>
			<mx:DataGridColumn headerText="Name"
							   dataField="name"/>
			<mx:DataGridColumn headerText="Sql"
							   dataField="statement"/>
		</mx:columns>

	</mx:DataGrid>
</mx:Application>

你可能感兴趣的:(arrayCollection)