无法跟踪XML数据?

时间:2011-09-20 19:25:56

标签: xml actionscript-3

您好我正在尝试跟踪一些XML数据。我使用了URLLoader,一旦加载完成,我尝试追溯XML数据。我可以追踪整个文件

trace(xmlData);

但如果我试图追踪一个特定的节点,我的踪迹中什么都没有。

trace(xmlData.captions);

我可能做错了什么?我见过的所有教程都让这看起来很直接,但它对我不起作用?

////// EDIT ////

这里是澄清的问题。

protected var xmlLoader:URLLoader = new URLLoader();
public var xmlData:XML = new XML();

public function loadXML(_filename:String) {
xmlLoader.addEventListener(Event.COMPLETE, loadIt);
xmlLoader.load(new URLRequest(_filename));          
}

function loadIt(e:Event):void {
xmlData = new XML(e.target.data);
parseData(xmlData);
}
function parseData(input:XML):void {
    trace(xmlData.captions);
}

如果我只是做跟踪(xmlData);我看到一切都很好。当我添加.captions时,我得到一个空白的痕迹。

这是我的XML文件

<?xml version="1.0" encoding="utf-8"?>
<captions>
    <cap start="00:01.7">
Narrator: Someone watching a car
    <br/>
    accelerate toward light speed
</cap>
<cap start="00:05.0">
    would see something
    <br/>
    very strange.
</cap>
</captions>

2 个答案:

答案 0 :(得分:4)

这是因为<captions>是你所谓的根节点。因此,当您尝试解析input.captions时,您实际上会搜索captions.captions。解析根节点的子节点可以与您已经尝试过的类似:

function parseData(input:XML):void 
{    
    // xml list of your cap attributes
    trace(input.cap);

    for (var i : int = 0; i < input.children().length(); i++) 
    {
       // every child node within your captions root node
       trace(input.children()[i]);
    }
}

答案 1 :(得分:1)

正如@rvmool所说,captions是根节点,因此它不存在于XML对象中。

另外,当您希望跟踪XML内容时,请不要忘记使用toXMLString()

trace(xmlData.cap.toXMLString());