PDA

Просмотр полной версии : как добраться до Xml аттрибута


processor
27.08.2005, 08:45
XML тег: <NODE name="r"/>
код:

funcition set(q){
z=eval ("object.attributes."+q)
z="eee"
}

функция получает имя аттрибута ("name" ) как string > q="name"
object - ссылка на XML обьект ( тег этот . можно увидеть при trace (object) )
короче неработает. Походу в z - записывается не ссылка на этот аттрибут, а его значение . Поэтому неработает.

object.attributes.q ="eee" тоже не получается ( он не определяет Q как переменную, а думает, что это имя аттрибута )

Как мне в такой ситуации изменить значение этого аттрибута ?

-----------------

Также почему-то не работает:

q="function set(){ object.attributes."+q+"='eee' } "
eval(q)
set()

Буньков Максим
27.08.2005, 10:10
дай весь код.

processor
27.08.2005, 10:16
весь код за 500 строк. но, помоему, этого достаточно. Есть XML обьект - надо изменить значение аттрибута, если имя аттрибута дано в string.

iNils
27.08.2005, 11:41
1. object и set зарезервированные слова, поэтому использовать их нельзя.
2.
obj = new XML ('<NODE name=\"r\"/>');
function sett (q) {
trace (obj);
obj.firstChild.attributes[q] = "eee";
trace (obj);
}
sett ("name");

processor
27.08.2005, 17:33
уррра. спасибо.

obj = new XML ('<NODE name="e" >');

можно какнибудь обратиться, типа:
trace ( obj.e ) или ( obj["e"] ) или еще как. Вообще name или ID значение особое имеют или нет ?

iNils
27.08.2005, 17:50
По поводу доступа почитай в хелпе. Там все сказано за исключением такой фичи как ID. Если на этапе создания xml ты указал каждому ноду уникальный id, то можешь сразу обратиться к этому ноду миную полностью все иерархию доступа.
Пример:
r = new XML ("<main id='0' name='a'/><main id='1' name='b'><test id='3' name='test'/></main><main id='2' name='c'/>");
trace (r[0]);
trace (r[1]);
trace (r[2]);
trace (r[3]);

processor
28.08.2005, 06:40
доступ по id - это СУПЕР !!! прям как в HTML . Огромное спасибо.