xml - SMIL 文件 xml 对 e4x 不友好?

标签 xml actionscript-3 e4x osmf smil

我正在加载 smil 文件(遵循 xml 格式),它不会让我通过名称选择属性(例如 xml.body),而是只能通过以下方式访问数据xml.child(0)

我已经尝试过xml.child('body'),但仍然没有任何结果。有人知道快速解决方法吗?我希望能够访问 xml.head.(@name=='rtmpPlaybackbase') 和 XMLList xml.body.switch.video

<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
   <meta name="title" content="myStream"/>
   <meta name="httpBase" content="http://mydomain.com/"/>
   <meta name="rtmpPlaybackBase" content="http://mydomain.com/"/>
</head>
<body>
   <switch>
      <video src="myStream500K@54552" system-bitrate="500000"/>
      <video src="myStream900K@54552" system-bitrate="900000"/>
      <video src="myStream1500K@54552" system-bitrate="1500000"/>
   </switch>
</body>

非常感谢!

最佳答案

首先,关闭你的开始标签,最后以 .假设您现在拥有这样的内容:

var xml:XML = new XML('<smil xmlns="http://www.w3.org/2001/SMIL20/Language"><head><meta name="title" content="myStream"/><meta name="httpBase" content="http://mydomain.com/"/><meta name="rtmpPlaybackBase" content="http://mydomain.com/"/></head><body><switch><video src="myStream500K@54552" system-bitrate="500000"/><video src="myStream900K@54552" system-bitrate="900000"/><video src="myStream1500K@54552" system-bitrate="1500000"/></switch></body></smil>');

然后如果你追踪 xml.body 的长度,它会给出 0。

trace(String(xml.body).length); //traces 0

这主要是因为你必须使用xml命名空间:

var ns:Namespace = new Namespace("http://www.w3.org/2001/SMIL20/Language");

现在使用此命名空间来访问 xml 中的标签:

trace(String(xml.ns::body).length); //traces 272

所以 xml.ns::TAGNAME 就是您实现它的方式。

希望这有帮助。

关于xml - SMIL 文件 xml 对 e4x 不友好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952129/

相关文章:

c# - 当可以是 XElement 或 XAttribute 时如何转换 XPathEvalute?

android - 更改 API 19 及以下版本的 RadioButton 颜色?

actionscript-3 - 来自 AIR 应用程序的电话调用

actionscript-3 - 基于flex4中固定点的线旋转

javascript - 有条件地更改字段的 Mirth Java 代码

c# - 采取什么方法为用户缓存唯一的自动建议列表?

sql-server - 在 SQL Server XML 数据类型查询中使用命名空间时出现问题

flash - 如何在 Flash 中将文本环绕在图像周围 (actionscript 3)

javascript - E4X 中的 getElementsByTagName