Условный вызов E4X ничего не возвращает только с 1 совпадением? - PullRequest
1 голос
/ 26 февраля 2009

хорошо, вот мой код:

var xml:XML = 
<xml>
    <typeA amount1="500" amount2="300" amount3="250" date="2008-02-17"/>
    <typeA amount1="500" amount2="300" amount3="250" date="2008-02-16"/>
    <typeA amount1="500" amount2="300" amount3="250" date="2008-02-17"/>
    <typeB amount1="500" amount2="300" amount3="250" date="2008-02-18"/>
    <typeB amount1="500" amount2="300" amount3="250" date="2008-02-19"/>
    <typeC amount1="500" amount2="300" amount3="250" date="2008-02-20"/>
    <typeC amount1="500" amount2="300" amount3="250" date="2008-02-21"/>
    <typeC amount1="500" amount2="300" amount3="250" date="2008-02-20"/>
</xml>;


trace(xml.typeA.(@date == "2008-02-16")); // no results
trace(xml.typeA.(@date == "2008-02-17")); // finds both
trace(xml.typeC.(@date == "2008-02-20")); // finds both
trace(xml.typeC.(@date == "2008-02-21")); // no results

Кажется, что это можно найти только в том случае, если существует более 1 вхождения.

Я что-то не так делаю?

1 Ответ

6 голосов
/ 26 февраля 2009

На самом деле он находит его, но, поскольку это только один элемент, он отслеживает его как XML (вместо XMList). Будучи пустым узлом, он просто проследит пустую строку.

Попробуйте это:

<typeA amount1="500" amount2="300" amount3="250" date="2008-02-16">Hello</typeA>

При отладке XML лучше использовать метод toXMLString.

trace(xml.*.(@date="1980-04-29").toXMLString());
...