/ Published in: ActionScript 3
                    
                                        
TimedText (TT) XML captions files can have namespaces that cause problems when parsing them in AS3. To get around this you can use this code to remove the namespace from the root XML node using Regex. This example uses
                
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
public class Main extends Sprite
{
private var _xmlFilename:String = "captions.xml";
private var _subtitlesXml:XML;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, onSubtitlesXmlLoadComplete);
urlLoader.load(new URLRequest(_xmlFilename));
}
private function onSubtitlesXmlLoadComplete(e:Event):void
{
_subtitlesXml = new XML(e.target.data);
trace("ORIGINAL TIMEDTEXT XML:\n" + _subtitlesXml.toString());
var myXmlStr:String = _subtitlesXml.toString();
var xmlnsPattern:RegExp = new RegExp("xmlns[^\"]*\"[^\"]*\"", "gi");
myXmlStr = myXmlStr.replace(xmlnsPattern, "");
myXmlStr = myXmlStr.replace("aaa:lang=\"en\"", "");
_subtitlesXml = new XML(myXmlStr);
trace("MODIFIED TIMEDTEXT XML:\n" + _subtitlesXml.toString());
var numCaptions:int = _subtitlesXml.body.div.p.length();
trace("numCaptions: " + numCaptions);
}
}
}
/////////////////////////////////////////////////////////////////////
// captions.xml
/////////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1" xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
<head>
<styling>
</styling>
</head>
<body>
<div>
<p begin="00:00:00.440">Caption 1 here</p>
<p begin="00:00:08.799">Caption 2 here</p>
</div>
</body>
</tt>
/////////////////////////////////////////////////////////////////////
// OUTPUT
/////////////////////////////////////////////////////////////////////
ORIGINAL TIMEDTEXT XML:
<tt aaa:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1" xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling" xmlns:aaa="http://www.w3.org/XML/1998/namespace">
<head>
<styling/>
</head>
<body>
<div>
<p begin="00:00:00.440">Caption 1 here</p>
<p begin="00:00:08.799">Caption 2 here</p>
</div>
</body>
</tt>
MODIFIED TIMEDTEXT XML:
<tt>
<head>
<styling/>
</head>
<body>
<div>
<p begin="00:00:00.440">Caption 1 here</p>
<p begin="00:00:08.799">Caption 2 here</p>
</div>
</body>
</tt>
numCaptions: 2
Comments
 Subscribe to comments
                    Subscribe to comments
                
                