使用变量中保存的节点名访问ActionScript 3 XML

时间:2013-03-02 12:03:53

标签: xml actionscript-3

在这里对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>

1 个答案:

答案 0 :(得分: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