'XML Attributes읽기'에 해당되는 글 1건

  1. 2008.09.20 XML 특성(Attributes) 읽기
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 버터백통