2009-04-29 5 views
2

Ich habe eine Funktion, die diese Linie hat:E4X: Verwenden Sie Zeichenfolge als Attributname in Ausdruck?

var returnString:String = items[0][email protected]; 

@Month ist ein attibute auf einem XML-Knoten wie folgt:

<xmlnode month="JAN"/> 

OK, aber ich muss abstrakt dem Attributnamen, damit ich übergeben eine Zeichenfolge für die Funktion und den Inhalt des Attributs mit dem Namen abrufen, der der übergebenen Zeichenfolge entspricht. Also zum Beispiel Wenn ich die Funktion wie diese Funktion ("Stein") anrufe gibt es die Items [0]. @ Stone zurück. Ich hoffe, das ist klar.

Weiß jemand, was ich tun soll?

Danke.

+0

Blick auf alle Kommentare kann ich nicht helfen, aber denke, dass hier etwas nicht stimmt. Ich habe die Lösungen getestet, die in deinen Antworten beschrieben wurden und bekomme nicht die Ergebnisse, über die ihr spricht. ~~~~~ Ich habe also ein einfaches XML mit einem Attribut 'id = "hey"' ~~~~~ 'trace (xml. @ Id);' // traces: hey ~~~~~ 'trace (xml . @ ['id']); '// traces leer ~~~~~' trace (xml.attribute ('id')); '// traces blank ~~~~~ macht auch 'id' zu einem String (von einem Literal) hilft nichts. – gltovar

Antwort

6

Sie wollen Attribut ('Stein') statt @Stone verwenden, es ist dasselbe, @Stone ist nur eine Kurzschrift, um es zu schreiben.

+0

Es funktionierte für die Person, die ursprünglich die Frage auch in mehreren meiner Anwendungen stellte, an denen ich arbeitete, als die Frage gestellt wurde. Vielleicht ist dein Problem etwas anders. – quoo

+0

Der Grund für die Probleme ist, dass Sie einen benutzerdefinierten Namespace verwenden. In unseren Antworten wird die Verwendung eines benutzerdefinierten Namespaces nicht berücksichtigt, da dies nicht Teil der ursprünglichen Frage war. Wenn Sie den benutzerdefinierten Namespace aus Ihrem Code entfernen, sollten unsere Antworten funktionieren (obwohl ich die anderen nicht getestet habe). Wenn Sie jedoch wirklich Hilfe bei Ihrem Problem haben wollten, sollten Sie Ihre eigene Frage stellen, anstatt böswillig die absolut gültigen Antworten zu wählen. Ich schlage vor, dass Sie diesen Artikel lesen, um besser zu verstehen, warum Ihre Verwendung eines Namespaces Ihr Problem verursacht hat: http://adobe.ly/lcSLZS – quoo

2

nicht nur das, aber wenn Sie jemals einen Wert zu einem Attribut mit einer Variablen für den Attributnamen zuweisen möchten, können Sie dies tun (obwohl es nicht ist dokumentiert) wie folgt:

 
    public function setAttr(obj:XML, attrName:String, value:String):void{ 
    [email protected][attrName] = value; 
    } 
Verwandte Themen