2009-04-29 2 views
2

E4X : 문자열을 표현식의 속성 이름으로 사용 하시겠습니까?

이 줄이있는 함수가 있습니다.

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

@month는 XML 노드의 attibute이므로 다음과 같습니다.

<xmlnode month="JAN"/> 

그래도 속성 이름을 추상화하여 문자열을 함수에 전달하고 전달 된 문자열과 일치하는 이름으로 속성의 내용을 가져옵니다. 예를 들어,이 함수 ("stone")와 같은 함수를 호출하면 항목 [0]. @ stone을 반환합니다. 나는 이것이 분명히 희망한다.

누구든지 내가 뭘하는지 어떻게 알 수 있습니까?

고마워.

+0

모든 의견을 보면 도움이되지 않지만 여기에 잘못된 것이 있다고 생각합니다. 귀하의 답변에 설명 된 솔루션을 테스트하고 귀하가 말하는 결과를 얻지 못하고 있습니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ . @ [ 'id']); // 빈칸을 추적 함 ~~~~~'trace (xml.attribute ('id'));'// 공백을 추적하여 ~ idx를 문자열로 만든다. (리터럴에서) 어떤 도움이되지 않습니다. – gltovar

답변

6

당신은 @stone이 아닌 속성 ('stone')을 사용하고 싶을 것입니다. 똑같은 @stone은 그것을 작성하는 간단한 방법 일뿐입니다.

+0

질문이 제기 된 당시에 제가 일해온 여러 가지 응용 프로그램에서 원래 질문을 한 사람에게도 잘 맞았습니다. 아마 당신의 문제는 약간 다릅니다. – quoo

+0

문제가 발생하는 이유는 사용자 정의 네임 스페이스를 사용하고 있기 때문입니다. 우리의 대답은 원래 질문의 일부가 아니기 때문에 맞춤 네임 스페이스의 사용을 고려하지 않았습니다. 코드에서 사용자 정의 네임 스페이스를 제거하면 우리의 대답은 모두 작동 할 것입니다 (다른 테스트를하지는 않았지만). 그래도 문제 해결에 도움이 필요하다면 완벽하게 유효한 답변을 투표하는 대신 악의적으로 질문을 제기해야합니다. 네임 스페이스를 사용하여 문제가 발생한 이유를 더 잘 이해하기 위해이 기사를 읽는 것이 좋습니다. http://adobe.ly/lcSLZS – quoo

2

뿐만 아니라,하지만 만약 당신이 속성 이름에 대한 변수를 사용하여 속성에 값을 할당 할 경우는 아니지만, 당신은 (이 작업을 수행 할 수 있습니다 문서화 됨) :

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