Actionscript 2阅读XML

时间:2012-08-09 13:14:04

标签: xml flash actionscript-2

我在“musics”文件夹中创建了一个名为“stage1.txt”的XML文件。 XML文件是:

<music>
    <speed>10</speed>
    <time>
        <note>1</note>
        <note>12</note>
        <note>32</note>
        <note>41</note>
    </time>
    <where>
        <lane>3</lane>
        <lane>2</lane>
        <lane>1</lane>
        <lane>4</lane>
    </where>
</music>

然后在flash文件中我使用以下代码来调用XML文件:

然后在flash文件中我使用以下代码来获取数据。

var myXML:XML = new XML();
myXML.ignoreWhite=true;
myXML.load("musics/stage"+_global.stages+".xml");
var temp = 0, temp2 = 0;
myXML.onLoad = function(success){
if (success){
trace (myXML);
}
}

直到这里工作得很好。但是,我想回想一下XML文件的第一个值,即“速度”。 我尝试使用此代码:

var speed = myXML.firstChild.firstChild.nodeValue;

但它似乎不起作用。 尝试过其他的事情:

myXML.firstChild.childNodes[0].nodeValue

但也不起作用。

2 个答案:

答案 0 :(得分:1)

在那里添加额外的firstChild。我不确定为什么,但似乎解析器将整个文档作为一个单独的级别来处理。

当事情不能解决时,找到所需内容的最佳方法是跟踪并查看其中包含的内容。所以从xml对象('trace(myXML)')开始,然后从'trace(myXML.firstChild)' - &gt;遍历那里。 'trace(myXML.firstChild.firstChild)' - &gt;等等,直到找到你需要的信息。

答案 1 :(得分:0)

您应该使用第三方库将XML转换为Object - 您可以使用Greensock的XMLParser - 有一个简短的教程和示例代码。

您的代码可能如下所示

import gs.dataTransfer.XMLParser;
XMLParser.load("musics/stage"+_global.stages+".xml", onFinish);
function onFinish($success:Boolean, $results:Object, $xml:XML):Void {
    if ($success) {
        trace("The speed is: "+$results.speed[0].nodeValue);1

    }
}

那么您可以更方便(和更健壮)的方式引用XML的节点:myMXL.speed[0].nodeValue

以某种方式参考节点是非常糟糕的做法。如果XML发生了变化,你的代码就会破坏哪个坏...