AS3.0 Cookbook/XML2008. 9. 20. 18:23
AS3에서 XML의 노드나 특성을 제거하기 위해서는 delete 키워드를 사용한다.
delete는 메서드가 아니므로 어떠한 객체 뒤에서 사용하거나 호출하는 것이 아니고 명령문 제일 앞에서 사용한다.

var books:XML =  <books> 
          <item price="12000" author="이외수" publisher="일지문화">삶의 길</item>
          <item price="28000" author="정윤수" publisher="제우미디어">플래시 (모션+액션)</item>
          <opinion>
              <item price="26000" author="이문열" publisher="샘터">그의 아버지</item>
              <item price="28000" author="전미연" publisher="밝은세상">사랑하기 때문에</item>
              <poem>
                 <item price="6500" author="정윤수" publisher="21세기 북스">시간</item>
                 <item price="12500" author="정윤수" publisher="21세기 북스">깜빡임</item>
              </poem>
           </opinion>
         </books>;


* books의 root노드 안에 item노드의 price속성을 제거 
delete books.item.@price;

* opinion의 poem노드 전체를 제거
delete books.opinion.poem;

* opinion의 노드의 모든 텍스트 노드를 제거
delete books.opinion.item.text()[1];

Posted by 버터백통
AS3.0 Cookbook/XML2008. 9. 20. 18:10

서버사이드에 XML데이터를 업로드 하기 위해서는 URLLoader()를 사용하고 URLRequest()객체에 데이터를 보내고자 하는 xml데이터로 설정하고 데이터의 Mime타입을  "text/xml"로 설정하면 된다.

var xmlData:XML =   <gamescore>
          <username>{userName}</username>
          <score>{score}</score>
         </gamescore>;

[ URLRequest의 데이터와 컨텐츠 mime 타입설정 ]
URLRequest.data = xmlData;
URLRequest.contentType = "text/xml";


Posted by 버터백통
AS3.0 Cookbook/XML2008. 9. 20. 17:59

XML에는 원소,  즉 노드 말고도 노드에 포함된 속성(특성)이 있다. 이 값을 읽어 오기 위해서는 AS3에서 제공하는 attributes()를 사용하여 값을 읽어오거나 E4X문법을 사용하여 읽어 올 수 있다.
또한 AS3에서 name()를 사용하여 속성의 이름을 알 수 도있다.

var books:XML =  <books> 
          <item price="12000" author="이외수" publisher="일지문화">삶의 길</item>
          <item price="28000" author="정윤수" publisher="제우미디어">플래시 (모션+액션)</item>
           <opinion>
            <item price="26000" author="이문열" publisher="샘터">그의 아버지</item>
            <item price="28000" author="전미연" publisher="밝은세상">사랑하기 때문에</item>
            <poem>
             <item price="6500" author="정윤수" publisher="21세기 북스">시간</item>
            </poem>
           </opinion>
         </books>;


[ AS3.0의 메서드 활용 ]
1. attributes() 메서드는 속성이 있는 한 개의 노드에만 적용해야 한다. ( books..attributes() ) -> 에러발생
2. attributes()를 사용하면 XMLList로 반환한다.
3. XMLList는 배열과 같아서 정수색인으로 값을 검색한다. 


var atr:XMLList = books.item[0].attributes();
trace( atr[0] );       // 12000
trace( atr[1] );       // 이외수

   
* name() 메서드는 속성의 이름을 반환하여 준다.
trace( books.item[0].attributes()[0].name() )     // price
trace( books.item[0].attributes()[1].name() )     // author
   
* attribute() 메서드는 속성의 값을 반환한다.
trace( books.item[1].attribute("author") );          // 정윤수

* 해당 노드에 대한 모든 속성 체크
for each( var atrb:XML in books.item[1].attributes() ){
    trace( "for each : " , atrb.name() , " = " , atrb.toString()  )
   }
[ 출력 결과 ]
for each :  price  =  28000
for each :  author  =  정윤수
for each :  publisher  =  제우미디어

[ E4X문법 활용 ]
trace( books.opinion.item[0].@author )           // 이문열
trace( books..@author )                                // 이외수정윤수이문열전미연정윤수
trace( books..@price )                                  // 120002800026000280006500

   
* 가격의 합을 구한다.
var total:Number = 0;
for each( var atrb:XML in books..@price ){
    total += Number( atrb );
}
trace("가격의 합 : " , total );                         // 가격의 합 :  100500
   
* @연산자와 대괄호 연산자를 이용
trace( books..@["author"] )                         // 이외수정윤수이문열전미연정윤수
trace( books..@["publisher"] )                     // 일지문화제우미디어샘터밝은세상21세기 북스



Posted by 버터백통