ReferenceError: Ошибка № 1065: переменная не определена при поиске узла по атрибуту

Я делал это много раз, но теперь я что-то упускаю... Я ищу узел, ища значение в атрибуте.

Если я попытаюсь отследить:

 xmlQuestStructure.page[activePageIndex].label.@priority

Трассировка в порядке, и я могу прочитать High, Medium, Low (значения, которые я ожидаю).

Но если я попытаюсь отследить это (где calculatePriority - это строка со значением High, Medium или Low)

 xmlQuestStructure.page[activePageIndex].label.(@priority == calculatedPriority)

Я получаю ReferenceError: Ошибка № 1065: приоритет переменной не определен

Что я делаю неправильно? Спасибо за вашу помощь!


person Sr.Richie    schedule 25.09.2012    source источник


Ответы (1)


Скорее всего, ваша проблема заключается в том, что один из ваших узлов ярлыков НЕ имеет определенный атрибут приоритета. Когда вы используете @ в e4x, он выдаст ошибку, если придет к узлу XML, для которого не указан атрибут.

Если существует вероятность того, что в вашем XML-узле этот атрибут может быть опущен, вместо использования '@' используйте attribute().

Итак, в вашем случае вы можете сделать это:

xmlQuestStructure.page[activePageIndex].label.(attribute("priority") == calculatedPriority);

использование attribute() является более пассивным и будет игнорировать узел, если он не имеет указанного атрибута, вместо того, чтобы выдавать ошибку.

person BadFeelingAboutThis    schedule 25.09.2012
comment
Если это не ваша проблема, опубликуйте свой файл XML (или хотя бы его часть) - person BadFeelingAboutThis; 25.09.2012
comment
Человек, спасибо. Я только что понял, в чем проблема, и пытался использовать метод атрибутов, но я не знал, что смогу выполнить запрос, как вы говорите! Потрясающий - person Sr.Richie; 25.09.2012