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 childs的例子:

        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 回答