下面是castor转换javabean得到的一个xml文件。
我们用flex解析之。
<?xml version="1.0" encoding="UTF-8"?>
<route from="from" to="to"><flight carrier="AR1" depart="6:23a1" arrive="8:42a1" number="426"/><flight carrier="AR2" depart="6:23a2" arrive="8:42a2" number="426"/></route>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" xmlns:shared="components.shared.*" height="100%">
<mx:Metadata>
[Event(name = "totalIDListClickEvent", type = "classes.TotalIDListClickEvent")]
</mx:Metadata>
<mx:Script>
<![CDATA[
//import classes.xmlSocket;
import mx.rpc.events.FaultEvent;
//import classes.SelectedPageChangeEvent;
//import classes.TotalIDListClickEvent;
import mx.events.ListEvent;
import mx.events.ModuleEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
//import classes.PageNames;
import flash.net.XMLSocket;
import mx.managers.CursorManager;
private var socket:flash.net.XMLSocket = new flash.net.XMLSocket();
//---------------------------------------------------------------//
//
//---------------------------------------------------------------//
// Stores the returned XML data for ID list.
[Bindable] private var _receivedIDList: ArrayCollection;
// Clicked initial letter
[Bindable] private var _selectedInitialLetter: String;
// Total page number
[Bindable] private var _totalPageNum: Number;
// from and to
[Bindable] private var _from: String;
[Bindable] private var _to: String;
// Selected page
[Bindable] private var _selectedPage: Number = 1;
//---------------------------------------------------------------//
//
//---------------------------------------------------------------//
//---------------------------------------------------------------//
//---------------------------------------------------------------//
private function init(): void
{
_selectedInitialLetter = "A";
httpTotalIDList.cancel();
httpTotalIDList.send();
}
//---------------------------------------------------------------//
private function idInitialLetterClicked(evt: Event): void
{
//Alert.show(evt.target.label, "Info");
_selectedInitialLetter = evt.target.label;
httpTotalIDList.cancel();
httpTotalIDList.send();
}
//---------------------------------------------------------------//
/*
private function idListClicked(evt: ListEvent): void
{
//Alert.show(evt.target.selectedItem.string, "Info");
var evtObj: TotalIDListClickEvent =
new TotalIDListClickEvent(TotalIDListClickEvent.TOTAL_ID_LIST_CLICK_EVENT,
evt.target.selectedItem.string);
dispatchEvent(evtObj);
}
*/
//---------------------------------------------------------------//
private function getHTTPResult_TotalIDList(evt: ResultEvent): void
{
try
{
_receivedIDList = evt.result.route.flight;
}
catch(err: TypeError)
{
var tempList: ArrayCollection = new ArrayCollection();
tempList.addItem(evt.result.root.searchResult);
_receivedIDList = tempList;
}
_from = evt.result.route.from;
Alert.show("from is " + _from, "信息");
_to = evt.result.route.to;
Alert.show("to is " + _to, "信息");
if(this._totalPageNum==1||this._totalPageNum==0)
{
btnToForword.enabled=false;
btnToLatter.enabled=false;
}else {
if(this.combPageNums.selectedIndex == 0 || this.combPageNums.selectedIndex==-1)
{
btnToForword.enabled=false;
}else {
btnToForword.enabled=true;
}
if(this.combPageNums.selectedIndex == this._totalPageNum-1)
{
btnToLatter.enabled=false;
}else{
btnToLatter.enabled=true;
}
if(this.combPageNums.selectedIndex != 0&&
this.combPageNums.selectedIndex != -1&&
this.combPageNums.selectedIndex != this._totalPageNum-1)
{
btnToForword.enabled=true;
btnToLatter.enabled=true;
}
}
var i: Number;
pagesInComboBox.removeAll();
for(i = 1; i < _totalPageNum + 1; i ++)
{
pagesInComboBox.addItem(i.toString());
}
combPageNums.selectedIndex = _selectedPage - 1;
if(_receivedIDList == null)
{
//Alert.show("没有找到以" + _selectedInitialLetter + "开头的ID", "信息");
return;
}
}
//---------------------------------------------------------------//
private function handleHTTPFault(evt: FaultEvent): void
{
Alert.show("在获取ID列表时发生了错误:" + "\n" + evt.message, "错误");
}
private function selectedPageChanged(): void
{
_selectedPage = combPageNums.selectedIndex + 1;
httpTotalIDList.cancel();
httpTotalIDList.send();
}
[Bindable] private var pagesInComboBox: ArrayCollection = new ArrayCollection();
[Bindable] private var Forword:String = "<<";
[Bindable] private var Latter:String = ">>";
private function goToForword():void
{
this.combPageNums.selectedIndex -= 1;
selectedPageChanged();
}
private function goToLatter():void
{
this.combPageNums.selectedIndex +=1;
selectedPageChanged();
}
]]>
</mx:Script>
<mx:ArrayCollection id="alphabetHead">
<mx:String>A</mx:String>
<mx:String>B</mx:String>
<mx:String>C</mx:String>
<mx:String>D</mx:String>
<mx:String>E</mx:String>
<mx:String>F</mx:String>
<mx:String>G</mx:String>
<mx:String>H</mx:String>
<mx:String>I</mx:String>
<mx:String>J</mx:String>
<mx:String>K</mx:String>
<mx:String>L</mx:String>
<mx:String>M</mx:String>
</mx:ArrayCollection>
<mx:ArrayCollection id="alphabetEnd">
<mx:String>N</mx:String>
<mx:String>O</mx:String>
<mx:String>P</mx:String>
<mx:String>Q</mx:String>
<mx:String>R</mx:String>
<mx:String>S</mx:String>
<mx:String>T</mx:String>
<mx:String>U</mx:String>
<mx:String>V</mx:String>
<mx:String>W</mx:String>
<mx:String>X</mx:String>
<mx:String>Y</mx:String>
<mx:String>Z</mx:String>
</mx:ArrayCollection>
<!--mx:HTTPService id="httpTotalIDList" method="GET" result="getHTTPResult_TotalIDList(event)" fault="handleHTTPFault(event)" url="{PageNames.siteRoot}{PageNames.IDListPageName}">
<mx:request xmlns="">
<turnToPage>{_selectedPage}</turnToPage>
<head>{_selectedInitialLetter}</head>
<protocolType>0</protocolType>
<format>{"xml"}</format>
</mx:request>
</mx:HTTPService-->
<mx:HTTPService id="httpTotalIDList" method="GET" result="getHTTPResult_TotalIDList(event)" fault="handleHTTPFault(event)" url="http://127.0.0.1:8080/test.xml">
<mx:request xmlns="">
<turnToPage>{_selectedPage}</turnToPage>
<head>{_selectedInitialLetter}</head>
<protocolType>0</protocolType>
<format>{"xml"}</format>
</mx:request>
</mx:HTTPService>
<mx:VBox height="100%">
<mx:HBox>
<mx:VBox height="100%">
<mx:Repeater id="alphabetRepeaterH" dataProvider="{alphabetHead}">
<mx:LinkButton id="alphabetSelectorH" label="{alphabetRepeaterH.currentItem}" click="idInitialLetterClicked(event)"/>
</mx:Repeater>
</mx:VBox>
<mx:VBox height="100%">
<mx:Repeater id="alphabetRepeaterE" dataProvider="{alphabetEnd}">
<mx:LinkButton id="alphabetSelectorE" label="{alphabetRepeaterE.currentItem}" click="idInitialLetterClicked(event)"/>
</mx:Repeater>
</mx:VBox>
</mx:HBox>
</mx:VBox>
<mx:VBox width="100%" height="100%">
<mx:DataGrid id="idList" dataProvider="{_receivedIDList}" dragEnabled="true" width="100%" height="100%" buttonMode="true" useHandCursor="true">
<mx:columns>
<mx:DataGridColumn dataField="carrier" headerText="carrier"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox width="50%">
<mx:Label id="lableTotalPages" text="{'共'}{_totalPageNum}{'页'}"/>
<mx:Button id="btnToForword" label="{Forword}" click="goToForword()" toolTip="前一页" enabled="false" width="1%" buttonMode="true" useHandCursor="true" />
<mx:ComboBox id="combPageNums" dataProvider="{pagesInComboBox}" change="selectedPageChanged()" textAlign="center" width="55" openDuration="100" closeDuration="100" buttonMode="true" useHandCursor="true"/>
<mx:Button id="btnToLatter" label="{Latter}" click="goToLatter()" toolTip="后一页" enabled="false" width="1%" buttonMode="true" useHandCursor="true"/>
</mx:HBox>
</mx:VBox>
</mx:Application>
分享到:
相关推荐
总的来说,Flex中的XML解析框架结合HTTPService,为我们提供了一种有效的方法来处理服务器返回的XML数据。通过理解和熟练运用这些工具,开发者能够构建出动态、交互性强的Flex应用程序,高效地处理来自服务器的XML...
2. Flex中的XML解析 在Flex中,XML对象提供了一种灵活的方式来创建、操作和解析XML文档。通过实例化XML类,我们可以加载XML数据并对其进行解析: ```actionscript var xml:XML = new XML("<root><item>Value</item>...
总结,Flex解析XML文件主要通过XML和XMLList类,它们提供了丰富的API来操作XML数据。理解这些概念和方法,将有助于你在Flex应用中有效地处理和展示XML数据。无论是简单的数据展示还是复杂的交互逻辑,Flex都能通过...
本篇文章将深入探讨如何使用Flex解析XML文件,并通过HTTPService来读取XML内容,以及如何根据需求过滤字符串并获取所需值。 首先,让我们了解Flex中的XML类。XML类是ActionScript 3.0中用于处理XML文档的主要工具,...
在本文中,我们将深入探讨如何使用Flex来解析XML文件,并将其内容用作ComboBox下拉列表的数据源。首先,让我们理解Flex的基本概念。Flex是Adobe开发的一种开放源代码的富互联网应用程序(RIA)框架,用于构建和部署...
Flex是Adobe公司开发的一种开源框架,主要用于构建富互联网应用程序...这些文件与XML解析的具体实现无关,但它们构成了一个完整的Flex项目的结构。在实际开发中,你可以在`src`目录下找到处理XML的ActionScript代码。
### ArcGIS Flex API 中的 Flex 技术:XML解析 #### 一、引言 随着Web服务和地理信息系统(GIS)技术的发展,XML作为一种开放的标准数据格式被广泛应用于数据交换和存储。对于ArcGIS Flex API而言,理解如何解析...
- **Flex与XML的互操作**:Flex通过内置的XML解析功能,可以直接读取和解析XML数据,这使得从服务器获取XML格式的数据并将其展示在Flex应用中变得非常简便。例如,文章中提到的JSP文件生成的XML数据,可以直接被Flex...
XMLDocument则提供错误处理和安全的XML解析;E4X则以其简洁的语法吸引开发者。选择哪种方法取决于具体的应用需求,如数据量、性能要求以及错误处理的必要性。 在实际开发中,通常会根据项目特点和需求,结合这三种...
综上所述,Flex中的XML操作涉及文件系统访问、网络通信、数据解析等多个方面,熟练掌握这些技能对于构建Flex应用至关重要。在实际项目中,根据具体需求灵活运用这些知识点,可以实现高效的数据管理和交换。
Flex通过XML解析器可以方便地读取这些数据,并将它们动态地显示在播放器界面上。这种数据驱动的开发方式使得程序更加灵活且易于维护。 3. **组件使用** Flex库提供了丰富的组件集合,如Button、Slider、...
本例中,通过HTTPService组件从服务器获取XML格式的菜单数据,然后将其解析并转换为Flex中的数据提供者,最终呈现在Tree组件上。 4. **Tree组件**: Tree组件是Flex中用于展示层次结构数据的一种UI组件。它可以...
1. **XML解析**:在Flex中,我们可以使用`mx:XML`组件或`flash.xml.XMLDocument`类来解析XML数据。XML是一种常见的数据格式,用于存储和传输结构化数据。在示例中,XML可能包含一系列可选项,这些选项将被用作...
突破jdk与wsdl第三方对xml文本解析领域割据趋势,该脚本既可以支持普通xml解析,也支持soap-xml第三方xml文本的解析; 极大的节省了引入冗余jar资源; 纯底层算法解析,不依赖任何第三方工具包,自主产权维护性强。
通过以上解释,我们可以了解到如何在Flex应用中使用`URLLoader`加载XML文件,然后将数据解析并绑定到UI组件,从而实现动态数据展示。这在构建数据驱动的富互联网应用程序时非常常见,有助于提高用户体验和交互性。
1. 使用XML类:在Flex中,我们可以直接创建XML对象来解析XML文档。首先,我们需要导入`mx.utils.XMLUtil`库,然后使用`XMLUtil.parse()`方法将XML字符串转换为XML对象。例如: ```actionscript var xmlStr:String = ...
3. 在Flex客户端接收XML:在Flex中,可以使用URLLoader类加载XML数据,然后使用XMLDecoder解析XML字符串为XML对象。 ```actionscript var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = ...
1. **XML类**:ActionScript 3.0提供了一个内置的XML类,用于创建、解析和操作XML文档。你可以通过创建XML对象并直接添加元素、属性来生成XML。例如: ```actionscript var myXML:XML = new XML(); myXML....
默认情况下,Flex使用Unicode编码(通常是UTF-8或UTF-16)来处理字符串,但如果XML文件使用的是其他编码,如GBK、BIG5等,那么在没有正确指定编码的情况下,Flex将无法正确解析XML中的字符,导致乱码出现。...
### Flex与XML操作详解 #### 一、E4X与ActionScript 3.0的集成 E4X(ECMAScript for XML)是ECMAScript标准的一个扩展,它被引入到ActionScript 3.0中,极大地简化了XML数据处理的过程。在Flash 5时,ActionScript...