flex與xml通訊

來源:互聯網
上載者:User

 一、最簡單模式:Flex通過httpservice和dataProvider進行資料轉送

Xml格式如下: 
 
<?xml version="1.0" encoding="utf-8" ?>
<Result>
 <NodeA>value1</NodeA>
 <NodeB>valve2</NodeB>
</Result>
 

 
在Flex中有一個DataGrid,這樣就可以用httpservice來使DataGrid擷取xml的資料了。
Flex端如下:
 
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
 title="Blog Details">
 <mx:HTTPService showBusyCursor="true"
  url="http://localhost:8080/text.xml" id=”xmlRecord” />
 <mx:DataGrid width="712" height="338"
  dataProvider="{xmlRecord.lastResult.Result}">
  <mx:columns>
   <mx:DataGridColumn headerText="SectionA"
                    dataField=" NodeA" width="400" />
   <mx:DataGridColumn headerText="SectionB"
                    dataField=" NodeB" width="30" />
  </mx:columns>
 </mx:DataGrid>
</mx:TitleWindow> 

※ 其中紅字部分必須一致,由於這個sample比較簡單,所以Kenshin就不深入研究了。
※ 綠字部分一定要按照xml的結構書寫。
這樣在run 這個Flex的時候,在DataGrid中就會顯示NodeA&NodeB的內容即value1&value2

二、稍微複雜一些模式
 
Xml端代碼如下:
 
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <channel>
  <title>value1</title>
  <link>http://www.k-zone.cn/zblog</link>
  <description>關注Flex,Java,DotNet,Web Desgi</description>
 </channel>
</rss> 

 

Flex端如下:
 
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute" creationComplete="feedRequest.send()">

 <mx:HTTPService id="feedRequest"
  url=" http://localhost:8080/text.xml"
  useProxy="false" />

 <mx:Panel x="10" y="10" width="475"
  height="400" layout="absolute"
  title="{feedRequest.lastResult.rss.channel.title}">
 </mx:Panel>
 
</mx:Application> 

如果想要得到上面的xml中title的值,只需按照綠字部分書寫即可得到Title的value。
以此類推如果想要得到xml中link的內容,應該按如下書寫
feedRequest.lastResult.rss.channel.link

三、複雜一些的模式,即xml的格式比較特殊

Xml端代碼如下:
 
<?xml version="1.0" encoding="utf-8"?>
<Result>
 <SectionA SubSectionA1=”value1” SubSectionA2="value2" />
 <SectionB SubSectionB1=”value3” SubSectionB2=”value4” />
</Result> 

 

如果大家想要得到SubSectionA1的內容,就顯得無從下手了。其實用E4X在actionscript3中已經支援的非常完美了。並且Flex builder2提供的help也有這樣的例子。但是我找了一下,沒有這樣的例子,所以自己研究了一下。並且把結果告訴大家。
要顯示SubSectionA1的內容。Flex端如下書寫:

 
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("data/sampleData.xml");
    loader.load(request);
    loader.addEventListener(Event.COMPLETE, onComplete);
}

public function onComplete(event:Event):void {
 var externalXML:XML;
 var loader:URLLoader = URLLoader(event.target);
 externalXML = new XML(loader.data);
 trace(externalXML. SectionA [0].@ SubSectionA1);

 

其中紅字部分就是SubSectionA1的內容了。其中externalXML. SectionA [0].@ SubSectionA1中的[0]是xml的record的條數。@後面的就是想要得到的子節點的值。其內容可以是SubSectionA2、SubSectionB等等的值。

關於xml的格式在繼續引伸一下。以下的格式
 
<?xml version="1.0" encoding="utf-8"?>
<Result>
 <SectionA SubSectionA1=”value1” />
</Result> 

相當於如下的格式:
 
<?xml version="1.0" encoding="utf-8"?>
<Result>
 <SectionA>
  <SubSectionA1>value1</SubSectionA1>
 </SectionA>
</Result> 

以上就是我關於XML和Flex進行通訊的一些想法,尤其是第三種格式,尤其重要。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.