2010-01-14 2 views

ответ

2
..element.([email protected] == "val") 
+0

Что произойдет в случае, если ключевой элемент существует без атрибута @attr? Я знаю, что XPath не возвращает для этого узла, но кратеры e4x с отсутствующим атрибутом типа ошибки для простых выражений. Это тоже происходит? –

+0

В моем опыте, если атрибут отсутствует, ничего не будет возвращено, ошибка не будет выбрана. – invertedSpear

+0

Это не вызовет проблем в AS3. В JavaScript есть одна проблема. Пока атрибут проверяется на дочернем узле (независимо от того, существует он или нет) в фильтре, ошибки не будут выбрасываться. '.. (@ bar ==" baz ")' будет вызывать ошибку, поскольку не каждый элемент имеет атрибут 'bar', поэтому вы бы хотели попробовать' .. (function :: attribute ("bar") == " baz ")' в JavaScript. –

2
xmlVarName.element.list.key.(@attr=="val"); 

альтернатива

xmlVarName..key.(@attr=="val"); 
+0

Нет, это вернет ключевые узлы. Выбранный xpath явным образом возвращает узлы элементов, которые имеют определенный ключевой атрибут. –

+0

'// element' не' .element' (это '/ element'). Это будет '..элемент'. –

+0

Я неправильно понял, что вы искали, извините, не знаком с xpath. У Илии есть ответ, другой - вызов метода parent(), такого как xmlVarName.element.list.key. (@ Attr == "val"). Parent(). Parent() (хотя Elijah is clean). – invertedSpear

1

Важно отметить, что

..element.([email protected] == "val") 

Может сбой, если ключевых узлов не все имеют @attr.

Самый безопасный (хотя и в моем опыте, а не на 100% успешный) метод для извлечения списка узлов.

..element.(list.key.attribute("attr") == "val") 

Однако, у меня были проблемы с e4x и условных выражений (реализация AS3, Mozilla, кажется, лучше.), Но это, кажется, вплоть до источника XML.