1

ここでActionScriptのXMLについて少し混乱しています:

次のように宣言されたXML変数があります。

public static var thisXML:XML;

そして、次を含む関数を使用してXMLを初期化しています。

thisXML.white.john = false;
thisXML.black.john = false;
thisXML.white.bill = false;
thisXML.black.bill = false;
thisXML.white.pete = false;
thisXML.black.pete = false;

次に、次の文字列変数があります。

public static var blackWhite:String;
public static var thisName:String;

'if'ステートメントで次のようなXMLにアクセスしたい(これが正しくないことはわかっている):

if (!thisXML.(blackWhite).(thisName)) {
    //do something
    thisXML.(blackWhite).(thisName) = true;
}

だから、私は以下を含む多くの方法を試しました:

thisXML.[blackWhite].[thisName];
thisXML.node[blackWhite].node[thisName];
thisXML.descendant[blackWhite].descendant[thisName];

...しかし、私はこれが正しくないことを知っています。また、XMLはブール値をサポートしていないため、文字列「true」と「false」を使用する必要があるかもしれませんが、それはここでの私の問題ではありません。問題は、変数を使用して特定のノードにアクセスすることです。

これはどのように行う必要がありますか?

読んでくれてありがとう。

編集:-私のXMLは次のようになります...

 <root>
     <Documents documentName = {thisDocument}>
         <White>
             <John>false</John>
             <Pete>false</Pete>
             <James>false</James>
         </White>
         <Black>
             <John>false</John>
             <Pete>false</Pete>
             <James>false</James>
         </Black>
      </Documents>
 </root>
4

1 に答える 1

3

変数名を介したxmlの子へのアクセスの例:

        var xml:XML = 
            <root>
                <white>
                    <john>john white</john>
                    <bill>bill white</bill>
                    <pete>pete white</pete>
                </white>
                <black>
                    <john>john black</john>
                    <bill>bill black</bill>
                    <pete>pete black</pete>
                </black>
            </root>

        var colorName:String = "white";
        var menName:String = "bill";

        //example using []
        var nodeTextVar:String = xml[colorName][menName][0];
        trace(nodeTextVar);

        //example using XMLList.child(name)
        nodeTextVar = xml.child(colorName).child(menName)[0];
        trace(nodeTextVar);

出力:

bill white
bill white
于 2013-03-02T12:53:59.027 に答える