从XMLListCollection filterFunction结果中基于Flash Builder中的单个XML元素创建List

时间:2012-04-19 01:01:06

标签: xml actionscript-3 air flash-builder filterfunction

我正在使用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文件就是这样。但这是基本结构。我需要在List中的每个“wordRecord”中只显示“word”字段,这将通过拖放和其他好东西启用。

Flash Builder MXML文件的相关部分是:

<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”元素,并且我需要创建一个filterFunction,它最终将只给出“firstLetter”的“word”,让我们假设“m ”

我尝试根据我在网络上找到的一些示例创建一个filterFunction,但由于我的XMLListCollection只是字段,我无法让filterFunction与其他XML字段一起使用。我尝试更改XMLListDeclaration以将每个“wordRecord”元素作为XMLList给出,但后来我无法弄清楚如何使s:List仅显示filterFunction的结果中的“word”。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

<s:List id="resultsList" labelField="word">
    <s:dataProvider>
        <s:XMLListCollection
                id="xmlWords"
                source="{wordsXML..wordRecord}"
                />
    </s:dataProvider>
</s:List> 

这样你就可以使用'wordRecord'对象作为过滤函数;