我正在加载 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/