0

「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>

次に、フラッシュ ファイルで、次のコードを使用して XML ファイルを呼び出します。

次に、フラッシュ ファイルで次のコードを使用してデータを取得しました。

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

しかし、うまくいきません。

4

2 に答える 2

1

そこに追加の firstChild を追加します。理由はよくわかりませんが、パーサーはドキュメント全体を別のレベルとして処理しているようです。

うまくいかないときに必要なものを見つける最善の方法は、その内容を追跡して確認することです。したがって、xml オブジェクト ('trace(myXML)') から開始し、そこから 'trace(myXML.firstChild)' -> 'trace(myXML.firstChild.firstChild)' -> などを必要な情報が見つかるまでトラバースします。 .

于 2012-08-09T20:52:15.053 に答える
0

XML をオブジェクトに変換するには、サード パーティのライブラリを使用する必要があります。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 が変更されると、コードが壊れてしまいます...

于 2012-08-09T16:49:40.757 に答える