Вы всегда можете использовать доступ к массиву, преобразовав строку E4X в массив, разделенный точками.
var xml:XML =
<data>
<a><b><c><x><y><z attr="This is an attribute">This is a text!</z></y></x></c></b></a>
</data>
var path1:String = "a.b.c";
var path2:String = "x.y.z";
var path3:String = "@attr";
var path:Array = ([path1, path2, path3].join('.')).split('.');
var result:XMLList = new XMLList(xml);
for (var i:uint = 0; i < path.length; i++) {
result = result[path[i]];
}
trace(result); // This is an attribute