Возможный дубликат:
e4x / as3: Как получить доступ к узлу с дефисом в его имени.
Я установил пространство имен для своего XML для использования SMIL, и я могу получить атрибут src элемента следующим образом:
my.node.@src
, который получает "это какой-то URL"
Однако у меня есть еще один атрибут под названием «системный битрейт». Из-за знака минус я не могу сделать @system-bitrate
Поэтому я попытался сделать то, что обычно делаю, а именно my.node.attribute('system-bitrate')
, но это не сработало.
Как ни странно, даже my.node.attribute('src')
не работает. Я подозреваю, что это связано с пространством имен? Итак, как мне получить атрибуты, используя ny.node.attribute
?
Единственное, что работает, это my.node.attributes()[1]
. Я знаю, что это не "правильный путь", поэтому я надеюсь, что кто-нибудь сможет меня просветить!
К вашему сведению, я работаю с файлами SMIL.
** редактировать **
Вот пространство имен, необходимое для XML, который я использую: default xml namespace = new Namespace('http://www.w3.org/2001/SMIL20/Language');
И пример XML, с которым я работаю:
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<meta name="title" content="Live"/>
</head>
<body>
<switch>
<video src="myStreamName" system-bitrate="200000"/>
</switch>
</body>
</smil>
** пример кода для DennisJaaman **
default xml namespace = new Namespace('http://www.w3.org/2001/SMIL20/Language');
var xml:XML = XML(event.target.data);
for each(var o:XML in xml.body['switch'].video) {
if(!hs) hs = o;
else {
trace(o.attributes()[1]); // works
trace(o.@url); // doesn't work either (makes me wonder about NS issues
trace(o['@system-bitrate']); // doesn't work
trace(o.attribute('@system-bitrate') // doesn't work
// etc etc, I just left a few in here
}
}