コンパイラーによって実装される <fx:XML> タグ
<fx:XML> タグは、テキストモデルから XML オブジェクトまたは XMLNode オブジェクトを生成するコンパイル時タグです。このタグには、Flash クラスで直接は提供されない次のような機能があります。
- ファイルを XML テキストモデルのソースとして指定できます。
- XML テキスト内で MXML バインディング式を使用して、可変データからノードの内容を取得できます。例えば次のように、ノードの名前属性をテキスト入力値にバインドできます。
<child name="{textInput1.text}"/> format="xml"属性を使用すると、E4X 形式の XML オブジェクトの代わりに、古い XMLNode オブジェクトを生成できます。
MXML シンタックス
<fx:XML> タグは、Flex アプリケーションファイルまたは MXML コンポーネントファイル内に挿入できます。<fx:XML> タグは、別のコンポーネントから参照される id 属性値を保持している必要があります。<fx:XML> タグが <mx:dataProvider> タグの直接の子である場合、id 属性値は不要です。タグ本体には、すべての子ノードを含む単一のルートノードがある必要があります。<fx:XML> タグを MXML コンポーネントのルートタグにはできません。タグで Flash XML または XMLNode クラスのプロパティを指定することはできません。これらは ActionScript で指定する必要があります。
<fx:XML> タグのシンタックスは次のとおりです。
<fx:XML
id="modelID"
format="e4x|xml">
<root>
child nodes
</root>
</fx:XML>
または:
<fx:XML
id="modelID"
format="e4x|xml"
source="fileName"
/>
デフォルトの format プロパティ値 e4x では XML オブジェクトが作成され、ECMA-357 仕様(E4X)で定義されている XML 処理規格が実装されます。後方互換性のため、format プロパティを xml に設定すると、flash.xml.XMLNode 型のオブジェクトを生成できます。
source プロパティはデータモデルの外部ソース(ファイルなど)を指定します。外部ソースには、静的データおよびデータバインディング式を含めることができます。コンパイラーはソース値を読み取り、ソースをアプリケーションにコンパイルします。source 値は実行時には読み取られません。
次の例では、<fx:XML> タグを使用して MenuBar コントロールのモデルを定義します。
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
backgroundColor="#FFFFFF">
<fx:XML format="e4x" id="myMenuModel">
<root label="Menu">
<menuitem label="MenuItem A">
<menuitem label="SubMenuItem 1-A"/>
<menuitem label="SubMenuItem 2-A" />
</menuitem>
<menuitem label="MenuItem B"/>
<menuitem label="MenuItem C" type="check"/>
<menuitem type="separator"/>
<menuitem label="MenuItem D">
<menuitem label="SubMenuItem 1-D" type="radio" groupName="one"/>
<menuitem label="SubMenuItem 2-D" type="radio" groupName="one"/>
<menuitem label="SubMenuItem 3-D" type="radio" groupName="one"/>
</menuitem>
</root>
</fx:XML>
<mx:MenuBar id="myMenu" labelField="@label" showRoot="true">
<mx:dataProvider>
{myMenuModel}
</mx:dataProvider>
</mx:MenuBar>
</s:Application>
Tue Jun 12 2018, 10:52 AM Z