SMIL файл xml не подходит для e4x? - PullRequest
2 голосов
/ 10 мая 2011

Я загружаю в файл 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>

Большое спасибо!

1 Ответ

4 голосов
/ 10 мая 2011

Прежде всего закройте начальный тег, в конце нажмите. Допустим, теперь у вас это так:

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 - это то, как вы этого достигнете.

Надеюсь, это поможет.

...