Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SMIL文件xml不是';e4x友好吗?_Xml_Actionscript 3_E4x_Osmf_Smil - Fatal编程技术网

SMIL文件xml不是';e4x友好吗?

SMIL文件xml不是';e4x友好吗?,xml,actionscript-3,e4x,osmf,smil,Xml,Actionscript 3,E4x,Osmf,Smil,我正在加载一个smil文件(遵循xml格式),它不允许我通过名称选择属性(例如xml.body),而只能通过xml.child(0)访问数据 我已经尝试了xml.child('body'),但仍然一无所获。有人知道快速解决方法吗?我希望能够访问xml.head.(@name=='rtmpPlaybackbase')和XMLListxml.body.switch.video <smil xmlns="http://www.w3.org/2001/SMIL20/Language"> &l

我正在加载一个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名称空间:

var ns:Namespace = new Namespace("http://www.w3.org/2001/SMIL20/Language");
现在使用此名称空间访问xml中的标记:

trace(String(xml.ns::body).length); //traces 272
因此,
xml.ns::TAGNAME
就是如何到达它的


希望这能有所帮助。

+answer+1以提高速度——这在不添加close标记的情况下有效(声明中不需要close标记?),但是,我将其标记为答案,因为我完全忘记了使用名称空间。谢谢你的帮助!注意-名称空间必须使用实际字符串(如“”)。我尝试了xml.namespacedesclarations()[0],它说没有定义ns。所以请坚持他给出的答案,你应该会很好!好的,最后一个注意..我添加了[code]default xml namespace=ns[/code]因为xml.ns::body.ns::switch由于switch是保留关键字而引发错误。请改为设置默认ns,然后您可以执行xml.body['switch']GL all。
trace(String(xml.ns::body).length); //traces 272