2010-08-24 82 views
1

我有一些XML,我試圖用e4x來過濾它。我E4X聲明是這樣的:Flex 4 E4X按屬性過濾有未定義的變量

model.config.source.fees..fee.(@min<amount)[email protected] 

我的XML如下鏈接纔可這樣的:

<flex> 
    <fees> 
    <fee type="credit" min="0.00" max="200.00" amount="6.00"/> 
    <fee type="credit" min="200.01" max="370.00" amount="10.00"/> 
    </fees> 
</flex> 

當運行E4X聲明,我得到一個錯誤信息: 錯誤#1065:變量@Min是沒有定義的。

但是,如果我將語句更改爲model.config.source.fees..fee。@ min,它將返回所有min屬性值的xmllist,所以min至少在該語句中定義。爲什麼原始聲明不起作用?

回答

4

當您使用@min<amount時,它要求所有費用節點都定義了min屬性。它適用於您的示例x​​ml,但可能您在其他測試數據中缺少@min

但是,如果您使用以下格式:

model.config.source.fees..fee.(parseFloat(attribute('min')) < amount)[email protected] 

它會處理所有節點的屬性是否存在與否。

+0

我試過這個說法 model.config.source.fees..fee。(attribute('min')== 0)。@ amount 它返回一個XMLList。如果我這樣做model.config.source.fees..fee。(屬性('min')== 0)。@ amount.toString();它是一個空字符串? – chris 2010-08-24 15:57:35

+0

良好的捕獲,編輯答案添加parseFloat在那裏。 – Dave 2010-08-24 16:04:01

+0

同樣,類似於「flex.fees.fee。(@ type =='credit')」的查詢失敗,出現錯誤「沒有這樣的變量」。你的「屬性('類型')」方法解決了這個問題! – 2011-01-27 21:07:59