2010-08-24 3 views
1

У меня есть xml, и я пытаюсь отфильтровать его с помощью e4x. Моя e4x заявление выглядит следующим образом:Flex 4 E4X Фильтрация по атрибутам имеет неопределенную переменную

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

Мой XML выглядит Liks это:

<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 оператор выполняется, я получаю сообщение об ошибке: Error # 1065: Переменная @min является не определен.

Но если я изменю свое утверждение на model.config.source.fees..fee. @ Min, он вернет xmllist всех значений атрибута min, поэтому min определяется, по крайней мере, в этом выражении. Почему исходное утверждение не работает?

ответ

4

При использовании @min<amount требуется, чтобы все узлы оплаты имели атрибут min. Он работает для вашего примера xml, но, возможно, вам не хватает @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. (Attribute ('min') == 0). @ Amount.toString(); это пустая строка? – chris

+0

Хороший улов, отредактированный ответ, добавляющий в него parseFloat. – Dave

+0

Аналогично, запрос, похожий на «flex.fees.fee. (@ Type == 'credit'),« не удался для меня с ошибкой «нет такой переменной». Ваш «атрибут» («тип») также исправил эту проблему! –