XML에 노드를 추가할 때 변수 참조 방법
- Posted at 2008/11/23 16:19
http://www.action-scripter.com/blog/trackback/1154
XML을 이용해서 작업을 하다 보면 노드를 추가해야 하는 상황이 발생하는데요.
노드를 추가할 때 외부 변수의 변수 값을 참조해서 추가하려면 어떡해 해야 할까요?
일단 XML에 노드를 추가할 때는 대표적으로 appendChild() 메서드를 사용합니다.
appendChild() 메서드는 다음과 같이 추가될 Child를 Object 형태로 전달 받게 되는데요.
위 소스의 결과 값은 다음과 같습니다.
<test>
<child/>
</test>
만약 추가할 노드에 외부에 선언된 변수 값을 참조하려면 일반적으로 변수값을 참조하듯이 변수이름을 그대로 넣어서 테스트를 해 보겠습니다.
위 소스의 결과 값은 다음과 같습니다.
<test>
<child>temp</child>
</test>
즉 의도했던 변수 값은 참조하지 못하고 변수이름이 그대로 문자형으로 인식 됩니다.
이렇게 외부에 있는 변수를 참조해서 노드를 추가할 경우에는 변수 이름을 { }로 감싸면 원하는 결과를 얻을 수 있습니다.
위 소스의 결과 값은 다음과 같습니다.
<test>
<child>Seoul</child>
</test>
노드의 이름, 값, attribute의 이름, 값 등에도 동일하게 변수를 참조할 때는 { }를 사용하면됩니다.
노드를 추가할 때 외부 변수의 변수 값을 참조해서 추가하려면 어떡해 해야 할까요?
일단 XML에 노드를 추가할 때는 대표적으로 appendChild() 메서드를 사용합니다.
appendChild() 메서드는 다음과 같이 추가될 Child를 Object 형태로 전달 받게 되는데요.
var temp_xml:XML = ; temp_xml.appendChild(); trace(temp_xml);
위 소스의 결과 값은 다음과 같습니다.
<test>
<child/>
</test>
만약 추가할 노드에 외부에 선언된 변수 값을 참조하려면 일반적으로 변수값을 참조하듯이 변수이름을 그대로 넣어서 테스트를 해 보겠습니다.
-
temp_xml.appendChild(<child>temp</child>);
-
trace(temp_xml);
위 소스의 결과 값은 다음과 같습니다.
<test>
<child>temp</child>
</test>
즉 의도했던 변수 값은 참조하지 못하고 변수이름이 그대로 문자형으로 인식 됩니다.
이렇게 외부에 있는 변수를 참조해서 노드를 추가할 경우에는 변수 이름을 { }로 감싸면 원하는 결과를 얻을 수 있습니다.
-
temp_xml.appendChild(<child>{temp}</child>);
-
trace(temp_xml);
위 소스의 결과 값은 다음과 같습니다.
<test>
<child>Seoul</child>
</test>
노드의 이름, 값, attribute의 이름, 값 등에도 동일하게 변수를 참조할 때는 { }를 사용하면됩니다.
Comments List
-
전 new XML("<child>..... 하곤 했는데, 유용한 글이네요

감사합니다~-
네 저도 작업 하다가 변수를 인식 못한다는 것을 이제야 알았네요.
한참을 찾았는데 다행히 간단하게 해결할 수 있는 방법이 있어서 소개합니다.
-
-
오~~ 좋은 정보...
-
후후. 좋은 정보인가? 맞아 필요한 사람에게는 정말 좋은 정보야.
-
-
몰랐던.. ㅎ;
근데 한번 입력했던 노드를 중복 다시 넣으려했더니 에러나네요; 매개체 하나만 된다나 어쩐다나.;
약간 다르게 해결하긴 했지만.. 역시.. 도움말을 봐야 ;;-
아하 그런 문제가 있는거였어? 이상한게 Flash Player 9에서는 아무런 문제가 없었던 코드인데 Flash Player10에서는 뭔가 더 철저하게 제어를 해야하는 것 같아.. (아 술 때문에 뭔소리인지..)
-










