2009-04-29 11 views
2

私はこのラインを持っている機能を持っている:E4X:文字列を式の属性名として使用しますか?

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

@monthはそうのようなXMLノード上のattibuteです:

<xmlnode month="JAN"/> 

OKしかし、私は渡すことができますので、私は抽象的属性名に必要関数に文字列を渡し、渡された文字列に一致する名前で属性の内容を取得します。例えば、この関数( "stone")のような関数を呼び出すと、items [0]。@ stoneが返されます。私はこれがはっきりしていることを望む

誰も私が何をするのか知っていますか?

ありがとうございました。

+0

すべてのコメントを見る私は助けが、ここに何か間違っていると思う。私はあなたの答えによって記述された解決策をテストし、皆さんが話している結果を得ていません。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 。@ ['id']); '//空白をトレースする~~~~~' trace(xml.attribute( 'id')); '//ブランク~~~~~~もトレースして 'id'を文字列にする(リテラルから)助けにならない。 – gltovar

答えて

6

あなたは@stoneではなく属性( 'stone')を使用したいと思うでしょう。同じことです。@stoneはそれを記述する簡単な方法です。

+0

それは最初に質問をした人のために働いていましたが、質問が出された時点で私が取り組んでいたいくつかのアプリケーションで働いていました。おそらくあなたの問題は若干異なります。 – quoo

+0

問題が発生している理由は、カスタム名前空間を使用しているからです。私たちの答えは、元の質問の一部ではないため、カスタム名前空間の使用を考慮していません。あなたのコードからカスタム名前空間を削除すると、私たちの答えはすべて動作するはずです(他のものはテストしていませんが)。あなたが本当にあなたの問題で助けを求めていたなら、あなたは悪意を持って完全に有効な回答を投票するのではなく、あなた自身の質問を提出すべきです。この記事を読んで、なぜネームスペースを使用して問題が発生したのかを理解することをお勧めします:http://adobe.ly/lcSLZS – quoo

2

あなたがこれを書くことができます:それはないですが(

var attrName:String = "month"; 
return items[0][email protected][ attrName ]; 
2

ないだけでなく、あなたがこれまで属性名に変数を使用して属性に値を割り当てたい場合は、あなたがこれを行うことができます次のように書かれています:

 
    public function setAttr(obj:XML, attrName:String, value:String):void{ 
    [email protected][attrName] = value; 
    } 
関連する問題