AIRでは、ローカルのXMLファイルデータを読み込むことが可能です。
File、FileStream、XMLのデータタイプを使用してXMLデータを読み込みます。
まずは、以下のようなXMLデータを用意します。
<?xml version="1.0" encoding="utf-8"?>
<set>
<sample>
<data>data1</data>
</sample>
<sample>
<data>data2</data>
</sample>
<sample>
<data>data3</data>
</sample>
<sample>
<data>data4</data>
</sample>
</set>
このXMLデータを「sample.xml」というファイル名で保存します。
次にFlex Builderで新規にプロジェクトを作成し、プロジェクトの「src」というフォルダにフォルダにこのsample.xmlを保存しておきます。
次に以下のコードのMXMLファイルに記述します。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
public var sampleXML:File;
public var stream:FileStream;
[Bindable]public var rXML:XML;
private function loadSampleXML():void
{
sampleXML = File.applicationDirectory;
sampleXML = sampleXML.resolvePath("sample.xml");
stream = new FileStream();
if(sampleXML.exists)
{
stream.open(sampleXML, FileMode.READ);
rXML = XML(stream.readUTFBytes(stream.bytesAvailable));
stream.close();
trace("XML data: "+rXML.sample);
}
}
]]>
</mx:Script>
<mx:VBox x="0" y="0" width="100%" height="100%">
<mx:Button label="Click Me" click="loadSampleXML();"/>
</mx:VBox>
</mx:WindowedApplication>
最後にデバッグモードでテストして、ボタンをクリックするとコンソールに以下のようなXMLデータが出力されます。
XML data: <sample>
<data>data1</data>
</sample>
<sample>
<data>data2</data>
</sample>
<sample>
<data>data3</data>
</sample>
<sample>
<data>data4</data>
</sample>
それでは、どのようにしてXMLデータを読み込んだのか確認してみよう。
まず、このサンプルで使用する変数の宣言をする必要があるので、以下の変数を用意してます。
- public var sampleXML:File;
- public var stream:FileStream;
- [Bindable]public var rXML:XML;
次に
sampleXML = File.applicationDirectory;
でデータが格納されてある場所を指定します。
sampleXML = sampleXML.resolvePath("sample.xml");
で実際のXMLファイルを読み込みます。
stream = new FileStream();
で新しくFileStreamオブジェクトを用意し、ファイルの取り扱い準備をします。
今回はXMLデータを読み込むので、以下のように.openのFileMode.READを使用します。
stream.open(sampleXML, FileMode.READ);
rXML = XML(stream.readUTFBytes(stream.bytesAvailable));
読み込み処理後は、stream.close();でクローズします。
XMLデータ内の<sample>の部分を取得したいので、
trace("XML data: "+rXML.sample);
と、.sampleがsampleタグ内のデータを引っ張り出してくることになります。
もっと深く細かく指定したデータを取得したい場合、例えば、今回のXMLデータで、Sampleのデータ部分のみを取得したいのであれば、rXML.sample.dataを指定することになります。
次回は、任意のパスのXMLデータを取得する方法および取得したXMLデータをデータグリッドに読み込ませるサンプルを紹介したいと思います。
1 comment:
Flexを勉強中の初心者ですが、とても解りやすかったです。
ありがとうございます。
Post a Comment