您的位置:首页 > 移动开发 > Objective-C

使用E4X来过滤XML简单示例

2009-11-28 20:33 751 查看
 XML数据源如下:

<mx:XMLList id="airports">
<airports>
<airport>
<city>Atlanta</city>
<name>Hartsfield-Jackson Atlanta Int'l</name>
<code>ATL</code>
<country>USA</country>
</airport>
<airport>
<city>Chicago</city>
<name>ATL</name>
<code>ORD</code>
<country>USA</country>
</airport>
<airport>
<city>London</city>
<name>Aloange</name>
<code>LHR</code>
<country>UK</country>
</airport>
<airport>
<city>Tokyo</city>
<name>Angeless</name>
<code>HND</code>
<country>Japan</country>
</airport>
<airport>
<city>Los Angeles</city>
<name>Angeles Int'l</name>
<code>LAX</code>
<country>USA</country>
</airport>
<airport>
<city>Dallas/Fort Worth</city>
<name>Dallas/Ft. Worth Int'l</name>
<code>DFW</code>
<country>USA</country>
</airport>
<airport>
<city>Paris</city>
<name>Angeless</name>
<code>CDG</code>
<country>France</country>
</airport>
<airport>
<city>Frankfurt/Main</city>
<name>Frankfurt International</name>
<code>FRA</code>
<country>Germany</country>
</airport>
<airport>
<city>Amsterdam</city>
<name>Amsterdam-Schiphol</name>
<code>AMS</code>
<country>Netherlands</country>
</airport>
<airport>
<city>Denver</city>
<name>Denver International</name>
<code>DEN</code>
<country>USA</country>
</airport>
<airport>
<city>Las Vegas</city>
<name>McCarran International</name>
<code>LAS</code>
<country>USA</country>
</airport>
<airport>
<city>Phoenix</city>
<name>Sky Harbor Int'l</name>
<code>PHX</code>
<country>USA</country>
</airport>
<airport>
<city>Madrid</city>
<name>Madrid-Barajas (AENA)</name>
<code>MAD</code>
<country>Spain</country>
</airport>
<airport>
<city>Bangkok</city>
<name>Bangkok International</name>
<code>BKK</code>
<country>Thailand</country>
</airport>
</airports>
</mx:XMLList>


<mx:TitleWindow width="500" height="300" layout="absolute">
<mx:TextInput x="158" y="21" id="txtSource" fontSize="12" enter="enterHander(event)"/>
<mx:DataGrid id="dg" x="0" y="51" fontSize="11" dataProvider="{xmlconn}"
dragEnabled="true" allowMultipleSelection="true" dragMoveEnabled="true" dropEnabled="true" width="470"
creationComplete="loadDG()">
<mx:columns>
<mx:DataGridColumn headerText="行号" labelFunction="getIndex"/>
<mx:DataGridColumn headerText="City" dataField="city"/>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Code" dataField="code"/>
<mx:DataGridColumn headerText="Country" dataField="country"/>
</mx:columns>
</mx:DataGrid>
<mx:Label x="50" y="23" text="请输入名字:" width="100" fontSize="14"/>

</mx:TitleWindow>

<mx:Script>
<!--[CDATA[
import mx.collections.XMLListCollection;
import mx.events.DragEvent;
import mx.events.ListEvent;
import mx.controls.Alert;

[Bindable]
var xmlconn:XMLListCollection;
/* 获得数据源,并把xmllist转换成 XMLListCollection*/
private function loadDG():void{
xmlconn=new XMLListCollection();
xmlconn.source=airports.airport;
}
/* 文本框的会车事件 */
private function enterHander(event:Event):void{
if(txtSource.text==""){
xmlconn.filterFunction=null;
}else{
xmlconn.filterFunction=filterHandle;
}
xmlconn.refresh();
}
/*过滤XML  */
private function filterHandle(item:XML):Boolean{
var searchResult:XMLList;
searchResult=item.(name==txtSource.text||code==txtSource.text);//断言
if(searchResult.length()>0){
return true;
}else{
return false;
}
}
//获取行号
private function getIndex(item:Object, column:DataGridColumn):String{
return (dg.dataProvider.getItemIndex(item)+1).toString();
}
]]-->
</mx:Script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息