AS3.0 Cookbook/XML2008. 9. 20. 16:30
특성을 추가하기 위해서는 E4X 문법을 사용한다. 노드(원소)에 . 을 이용하여 접근한 다음 @(속성접근)를 사용하여 값을 대입하게 된다.

var xml1:XML = <Test><someElement /></Test>;
xml1.someElement.@number = 120;
xml1.someElement.@string = "some Text";
xml1.someElement.@boolean = true
xml1.someElement.@ary = ["a" , undefined , "b" , "c" , null , 100 , false];
xml1.someElement.@[ "bad-var-name" ] = "yes";
xml1.someElement.@[ "color" + num ] = "red";
trace(xml1);

<Test>
  <someElement number="120" string="some Text" boolean="true" ary="a,,b,c,,100,false"
                      bad-var-name="yes" color10="red"
/>
</Test>
이처럼 다양항 데이터 타입을 XML로 설정할 수 있다.
Posted by 버터백통
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 버터백통
AS3.0 Cookbook/XML2008. 9. 20. 16:09

XML은 구조화된 텍스트 기반의 데이터 표시형식이다.
XML은 URL-encoded에 비해 서버사이드 스크립트언어(PHP,Jsp등)에서 만들 때  복잡한 데이터를 쉽게 표현 할 수 있다. 또한 서버사이드 스크립트에서 XML을 읽거나 쓰는 함수를 내장하고 있으며, 모든 종류의 플랫폼과 어플리케이션에서 데이터교환의 표준으로 사용되고 있다.

AS3에서는 XML을 위한 새로운 문법이 추가되었다. 바로 E4X라고 불리는 ECMAScript로서 이전의 DOM(Document Object Model)에 비해 쉽고 다루기 편하게 되어있다.

* XML문서
- XML을 담고있는 파일이며, 이것은 받거나 보내질 XML데이터를 참조하고 있기도 한다.

* XML정의
-  <? xml version="1.0" encode="UTF-8" ?>과 같은 형태로 XML파서는 이 문서가 어떠한 XML문서인지를 판단하는 태그이다.

* XML트리
- 데이터 트리로 XML트리는 계층 구조로 표현한다.

* XML패킷
- 전체 XML문서 중 하나의 노드나 완성된 XML의 조각을 의미한다.

* XML노드
- XML의 기본 단위이다. 노드는 원소(<name></name>) , 텍스트노드 , 특성(attributes)등으로 나누어지며, 일반적으로 원소와 텍스트노드를 "Node"라고 부른다.

* XML원소
- 태그와 같은 형태이며 원소는 시작(<name>)과 종료 태그(</name>)로 구성되거나 내부에 다른 원소를 포함하지 않는다면 단일 태그로 구성한다(<name />) 단이 태그시 끝에 /는 앞에서 한칸 정도 띄워 준다.

* 루트노드
- XML계층구조상 최상위 노드

* 특성(속성)
- 원소태그안에 이름="값"의 형태로 존재한다.(name="홍길동")

<? xml version="1.0" encode="UTF-8" ?>
<rootNode>
<Nodes>
<Person name="홍길동" age="30" />
<Msg>텍스트 노드</Msg>
</Nodes>
</rootNode>
위와 같은 구조로 대부분의 XML데이터는 정의 된다. 인코드 방식은 필요 맞게 사용해야 한다.












Posted by 버터백통