コンパイラーによって実装される <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