Actionscript 3 as3名称空间-获取带有减号的属性

Actionscript 3 as3名称空间-获取带有减号的属性,actionscript-3,xml-namespaces,e4x,smil,Actionscript 3,Xml Namespaces,E4x,Smil,可能重复: 我已经将XML的名称空间设置为使用SMIL,并且可以通过以下方式提取元素的src属性: my.node.@src获取“这是某个URL” 然而,我有另一个属性叫做“系统比特率”。由于负号的原因,我无法执行@system-bitrate,因此我尝试了通常执行的my.node.attribute('system-bitrate'),但它不起作用 奇怪的是,甚至my.node.attribute('src')都不起作用。我怀疑这是因为名称空间?那么如何使用ny.node.attribute

可能重复:

我已经将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]
我知道这不是“正确的方法”,所以我希望有人能启发我

仅供参考,我正在处理文件

**编辑**

下面是我正在使用的XML所需的名称空间:
defaultxml名称空间=新名称空间('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>

尝试使用方括号,如以下示例所示:

default xml namespace = new Namespace("http://www.w3.org/2001/SMIL20/Language");
var xmlSmpl: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>;

trace (xmlSmpl.body['switch']['video']['@system-bitrate']);
默认xml名称空间=新名称空间(“http://www.w3.org/2001/SMIL20/Language");
var xmlspl:XML=
;
跟踪(xmlspl.body['switch']['video']['@system bitrate']);
查看此帖子:

******编辑****:

并使用以下符号获取包含-(破折号)的XML属性

这些方法不起作用:

trace("Video system-bitrate: " + my.node.video.@["system-bitrate"]);
trace("Video system-bitrate: " + my.node.video.attribute("@system-bitrate"));
有关更多信息,请查看


干杯!QName的力量

my.node.attribute( 
    new QName( 'http://www.w3.org/2001/SMIL20/Language', 'system-bitrate' ) 
)
关于属性(以及后代和子级…)的一点是,它的参数是type
*
(匿名)。这是因为它实际上不是字符串,而是在后台强制为QName(没有URI)。这意味着您正在默认URI下搜索上述URI下的内容


让我知道上面的代码是如何工作的。

不幸的是,您必须使用以下名称空间:
default xml namespace=new namespace('http://www.w3.org/2001/SMIL20/Language');my.node.video.attributes()[1]中获取任何内容
这对我来说太奇怪了。我想你列出的任何一种方法都会奏效。我会在我的原始问题上附加编辑我的代码。
trace("Video system-bitrate: " + my.node.video.@["system-bitrate"]);
trace("Video system-bitrate: " + my.node.video.attribute("@system-bitrate"));
my.node.attribute( 
    new QName( 'http://www.w3.org/2001/SMIL20/Language', 'system-bitrate' ) 
)