diary       blog       guest

XML에 노드를 추가할 때 변수 참조 방법

http://www.action-scripter.com/blog/trackback/1154
XML을 이용해서 작업을 하다 보면 노드를 추가해야 하는 상황이 발생하는데요.
노드를 추가할 때 외부 변수의 변수 값을 참조해서 추가하려면 어떡해 해야 할까요?
일단 XML에 노드를 추가할 때는 대표적으로 appendChild() 메서드를 사용합니다.
appendChild() 메서드는 다음과 같이 추가될 Child를 Object 형태로 전달 받게 되는데요.

var temp_xml:XML = ;
temp_xml.appendChild();
trace(temp_xml);

위 소스의 결과 값은 다음과 같습니다.

<test>
  <child/>
</test>

만약 추가할 노드에 외부에 선언된 변수 값을 참조하려면 일반적으로 변수값을 참조하듯이 변수이름을 그대로 넣어서 테스트를 해 보겠습니다.

  1. var temp_xml:XML = <test></test>;
  2. var temp:String = "Seoul";
  3. temp_xml.appendChild(<child>temp</child>);
  4. trace(temp_xml);

위 소스의 결과 값은 다음과 같습니다.

<test>
  <child>temp</child>
</test>

즉 의도했던 변수 값은 참조하지 못하고 변수이름이 그대로 문자형으로 인식 됩니다.
이렇게 외부에 있는 변수를 참조해서 노드를 추가할 경우에는 변수 이름을 { }로 감싸면 원하는 결과를 얻을 수 있습니다.

  1. var temp_xml:XML = <test></test>;
  2. var temp:String = "Seoul";
  3. temp_xml.appendChild(<child>{temp}</child>);
  4. trace(temp_xml);

위 소스의 결과 값은 다음과 같습니다.

<test>
  <child>Seoul</child>
</test>

노드의 이름, 값, attribute의 이름, 값 등에도 동일하게 변수를 참조할 때는 { }를 사용하면됩니다.
2008/11/23 16:19 2008/11/23 16:19

Comments List

  1. 검쉰 2008/11/23 22:30 # M/D Reply Permalink

    전 new XML("<child>..... 하곤 했는데, 유용한 글이네요 ;)
    감사합니다~

    1. 땡굴이 2008/11/24 18:36 # M/D Permalink

      네 저도 작업 하다가 변수를 인식 못한다는 것을 이제야 알았네요.
      한참을 찾았는데 다행히 간단하게 해결할 수 있는 방법이 있어서 소개합니다.

  2. Han Sanghun 2008/11/24 14:44 # M/D Reply Permalink

    오~~ 좋은 정보...

    1. 땡굴이 2008/11/24 18:36 # M/D Permalink

      후후. 좋은 정보인가? 맞아 필요한 사람에게는 정말 좋은 정보야.

  3. 찌노 2008/12/02 13:01 # M/D Reply Permalink

    몰랐던.. ㅎ;
    근데 한번 입력했던 노드를 중복 다시 넣으려했더니 에러나네요; 매개체 하나만 된다나 어쩐다나.;
    약간 다르게 해결하긴 했지만.. 역시.. 도움말을 봐야 ;;

    1. 땡굴이 2008/12/05 04:13 # M/D Permalink

      아하 그런 문제가 있는거였어? 이상한게 Flash Player 9에서는 아무런 문제가 없었던 코드인데 Flash Player10에서는 뭔가 더 철저하게 제어를 해야하는 것 같아.. (아 술 때문에 뭔소리인지..)

   1    
ABOUT  |  WORKS  |  @seonggyu
COPYRIGHT ⓒ 2000 - 2010. ACTION-SCRIPTER.COM. ALL RIGHTS RESEVED.