2013-03-02 66 views
1

有點困惑XML在ActionScript在這裏舉行的節點名稱:訪問的ActionScript 3 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; 

我要訪問我的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> 

回答

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 
+0

謝謝,但我仍然困惑。你已經創建了一個新的例子,我不確定它可以被翻譯成我給出的例子。 如果你有'節點',我有'黑色'和'白色'。因此,在剛剛使用過一個(nodeName)的字符串中需要使用兩個變量。 如果你可以使用我的例子而不是創建一個新的例子,它會更清晰。 謝謝。 – GuyOxford 2013-03-02 13:12:39

+0

好吧,我更新了這個例子,使用兩個類似於你的例子的變量節點名(或者相同,我不確定)。 – fsbmain 2013-03-02 13:28:12

+0

明白!謝謝......現在都在工作。 – GuyOxford 2013-03-02 13:57:45