我在“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
但也不起作用。
答案 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发生了变化,你的代码就会破坏哪个坏...