'prependChild'에 해당되는 글 1건

  1. 2008.09.20 XML객체에 원소 추가
AS3.0 Cookbook/XML2008. 9. 20. 16:27
[ AS3 메서드를 통한 추가 ]
E4X를 이용하여 원소를 만들고 XML 트리에 추가 하고 싶을 때는 appendChild() ,
prependChild() ,insertChildBefore()나 insertChildAfter() 메서드를 사용한다.

appendChild( 값 ) : 순서에 따른 원소를 추가
prependChild( 값 ) : 제일 앞에 원소를 추가
insertChildBefore( 지정노드  , 값) : 지정 노드 앞에 원소추가
insertChildAfter( 지정노드 , 값 ) : 지정 노드 뒤에 원추가


[ xml테스트 ]
var xml:XML = <Test />;
xml.appendChild( <two>2</two> )
xml.insertChildBefore( xml6.two[0] , <part>1.75</part> );
xml.prependChild( <one>1</one> );
xml.insertChildAfter( xml6.one[0] , 1.5 );
trace(xml);

[ 출력 결과 ]
 <Test>
  <one>1</one>
  1.5
  <part>1.75</part>
  <two>2</two>
</Test>
결과를 보면 루트노드인 <Test>는 AS3의 메서드에 의해 값이 추가되어 끝 태그가 자동으로 생성되었다.
<Test />  -> <Test>추가된 값들...</Test> 또한 추가시 각각의 명령에 맞도록 데이터 결과는 순서대로 정리되어있다.

[ E4X를 통한 원소 추가 ]
노드를 추가하기 위해서는 . 뒤에 노드명을 설정하고 값은 = 를 통해 대입한다.

var xml1:XML = <Test />;
xml1.newElement = "New Insert";
trace(xml1)

[ 결과 ]
 <Test>
  <newElement>New Insert</newElement>
</Test>


대괄호 연산식을 통해 문자와 숫자를 연산하여 노드를 생성하기도 한다. []연산식을 사용하면 "-"이나 "<",">"등과 같은 값을 파싱에러나 컴파일 에러 없이 값을 설정할 수 있다.

[ 변수의 값을 연산하여 설정 ]
var xml2:XML = <Test />;
var id:int = 10;
xml2["user"+id] = "";
trace( xml2 )

[ 결과 ]
 <Test>
  <user10/>
</Test>

[ 파싱 에러를 유발할 특수 문자를 설정 ]
var xml3:XML = <Test />;
xml3["user-id"] = "";
trace( xml3 )

[ 결과 ]
 <Test>
  <user-id/>
</Test>


이처럼 E4X를 통해 원소나 속성을 추가 할 수 있다.


Posted by 버터백통