Flash Builder 4を使用しており、次の構造を持つwords.xmlという外部XMLファイルがあります。
<wordList>
<wordRecord>
<word>duck</word>
<syllables>1</syllables>
<firstLetter>d</firstLetter>
<!--other fields-->
</wordRecord>
<wordRecord>
<word>machete</word>
<syllables>3</syllables>
<firstLetter>m</firstLetter>
<!--other fields-->
</wordRecord>
<!--more wordRecords-->
</wordList>
さて、これらは正確なフィールド名やコンテンツではありません。これらは私のクライアント独自のものであり、そのXMLファイルはこれです。しかし、これが基本的な構造です。リスト内の各「wordRecord」の「word」フィールドだけを表示する必要があります。これは、ドラッグアンドドロップやその他の機能で有効になります。
FlashBuilderMXMLファイルの関連部分は次のとおりです。
<fx:Declarations>
<fx:XML id="wordsXML" source="/xml/words.xml" />
<fx:Declarations>
<s:List id="resultsList">
<s:dataProvider>
<s:XMLListCollection id="xmlWords" source="{wordsXML..word}" />
</s:dataProvider>
</s:List>
ここまでは順調ですね。リストは私のAirアプリケーション、スクロール、その他すべてで問題なく表示され、適切な属性が存在する場合、ドラッグアンドドロップはうまく機能します。
ただし、必要なのは、他のフィールドに従ってリストをフィルタリングし、結果から単語だけを表示できるようにすることです。
ここでは、XMLファイルに多数の「wordRecord」要素が含まれていると仮定します。最終的に「firstLetter」が「m」である「単語」だけを取得するfilterFunctionを作成する必要があります。
Webで見つけたいくつかの例に基づいてfilterFunctionを作成しようとしましたが、XMLListCollectionはフィールドのみであるため、filterFunctionを他のXMLフィールドと連携させることができません。XMLListDeclarationを変更して各「wordRecord」要素をXMLListとして提供しようとしましたが、filterFunctionの結果から「word」のみを表示するようにs:Listを取得する方法がわかりません。
何か案は?前もって感謝します。