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');我不知道为什么会这样,但确实如此(也许这一直是我的错?)+1&回答他们试图获取一个节点,而我可以获取该节点,但不能获取属性:(好吧,这仍然是相同的原则,请检查我编辑的帖子我尝试了所有这些,出于某种原因,我只能从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' )
)